문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42862
코딩테스트 연습 - 체육복
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번
programmers.co.kr
체육복을 우선 왼쪽에 있는 사람으로부터 빌리는 것을 시도한 뒤 불가능하다면 오른쪽에 있는 사람으로부터 빌리는 것을 시도하도록 코드를 작성했습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
#include <vector> | |
using namespace std; | |
int solution(int n, vector<int> lost, vector<int> reserve) { | |
vector<int> students(n + 1, 1); | |
students[0] = 0; | |
for (int idx : lost) | |
{ | |
students[idx]--; | |
} | |
for (int idx : reserve) | |
{ | |
students[idx]++; | |
} | |
for (int i = 1; i <= n; i++) | |
{ | |
if (students[i]) | |
{ | |
continue; | |
} | |
if (i != 1 && students[i - 1] == 2) | |
{ | |
students[i]++; | |
students[i - 1]--; | |
} | |
else if (i != n && students[i + 1] == 2) | |
{ | |
students[i]++; | |
students[i + 1]--; | |
} | |
} | |
int answer = 0; | |
for (int student : students) | |
{ | |
answer += (student >= 1 ? 1 : 0); | |
} | |
return answer; | |
} | |
int main(void) | |
{ | |
int n = 5; | |
vector<int> lost = { 2, 4 }; | |
vector<int> reserve = { 1, 3, 5 }; | |
cout << solution(n, lost, reserve) << "\n"; | |
return 0; | |
} |

개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers 코딩테스트 고득점 Kit] 큰 수 만들기 (0) | 2021.09.24 |
---|---|
[Programmers 코딩테스트 고득점 Kit] 조이스틱 (0) | 2021.09.24 |
[Programmers 코딩테스트 고득점 Kit] 이중우선순위큐 (0) | 2021.09.23 |
[Programmers 코딩테스트 고득점 Kit] 디스크 컨트롤러 (0) | 2021.09.23 |
[Programmers 코딩테스트 고득점 Kit] 더 맵게 (0) | 2021.09.22 |