Make Unreal REAL.
article thumbnail
Level 0. 수 조작하기 2

Level 0. 수 조작하기 2 #include #include using namespace std; string solution(vector numLog) { size_t n = numLog.size() - 1; string answer(n, '\0'); const char* wasd = "d w s a"; for (int i = 0; i < n; ++i) answer[i] = wasd[numLog[i] - numLog[i + 1] + 10]; return answer; }

article thumbnail
Level 0. 가까운 1 찾기

Level 0. 가까운 1 찾기 #include #include #include using namespace std; int solution(vector arr, int idx) { auto result = find(next(arr.begin(), idx), arr.end(), 1); return (result == arr.end()) ? -1 : result - arr.begin(); }

article thumbnail
Level 2. 2 x n 타일링

Level 2. 2 x n 타일링 예제를 참고해 분석해보니 길이가 5일 경우, 5C0 + 4C1 + 3C2가 되는 것 같아서 구현해보았으나 틀렸다. // 이 풀이는 틀린 풀이다. #include #include using namespace std; int solution(int n) { int answer = 0; const int P = 1'000'000'007; vector factorials(n + 1, 1); for (int i = 2; i = j; --i, ++j) answer += factorials[i] / factorials[i - j] / factorials[j]; return answer; } 도저히 모르겠어서 힌트를 참고해보니 그냥 피보나치 수열과 모듈러 연산에 관한 문제였다고 한다...

article thumbnail
Level 0. 등차수열의 특정한 항만 더하기

Level 0. 등차수열의 특정한 항만 더하기 #include #include using namespace std; int solution(int a, int d, vector included) { int answer = 0; for (bool b : included) answer += (b ? a : 0), a += d; return answer; }

article thumbnail
Level 2. 두 큐 합 같게 만들기

Level 2. 두 큐 합 같게 만들기 우선 앞뒤에서 추가/삭제가 빈번하므로 vector 대신 deque로 변환해 사용했다. vector를 그대로 사용하고 인덱스로 관리해도 되긴 하다. 두 큐의 차이를 관리하면서 0이 되는 시점을 찾았다. 두 큐의 차가 홀수라면, 합을 같게 만들 수 없으므로 바로 종료한다. 첫 번째 큐에서 n1만큼 두 번째로 옮기고 두 번째 큐에서 n2만큼 첫 번째 큐로 옮기면, 두 큐가 바뀌었을 뿐 0으로 만들 수 없다는 의미이므로 종료한다. 그럼 while 문의 조건이 diff && (cnt1 != n1 || cnt2 != n2)이어야 하는데 코드와 같은 이유는 아래 설명한다. 큐에서 원소를 옮기는 작업이 합을 기준으로 하기 때문에, 개수 조건 경계에서 한 큐에서 연속해서 2번의 p..

article thumbnail
Level 0. 배열 만들기 3

Level 0. 배열 만들기 3 #include #include using namespace std; vector solution(vector arr, vector intervals) { vector answer; for (vector& interval : intervals) answer.insert(answer.end(), &arr[interval[0]], &arr[++interval[1]]); return answer; }

검색 태그