Make Unreal REAL.
article thumbnail
Level 1. 대충 만든 자판

Level 1. 대충 만든 자판 어려운 문제는 아니었다. keymap에서 가장 작은 위치를 찾으면 된다. #include #include using namespace std; vector solution(vector keymap, vector targets) { size_t size = targets.size(); vector answer(size, 0); for (int i = 0; i < size; ++i) { for (char c : targets[i]) { int pos = -1; for (string key : keymap) { int p = key.find(c); pos = (p == -1) ? pos : (pos == -1) ? p : min(p, pos); } if (pos == -1) {..

article thumbnail
Level 1. 실패율

Level 1. 실패율 stages 벡터를 정렬하거나 count_if() 함수를 이용할 수도 있지만 나는 각 스테이지별 도달한 사람 수를 미리 계산하여 사용했다. 1 ~ N을 갖는 인덱스 배열을 만들고 실제 정렬은 reached_users 벡터에 인덱스를 전달해 수행할 수 있다. stable_sort() 함수를 사용하면 같은 순위를 갖는 원소의 순서를 유지할 수 있다. #include #include #include using namespace std; // i+1번째 스테이지에 도달한 사람 = i번째 스테이지를 클리어한 사람 // (i번째 스테이지에 도달한 사람 - i번째 스테이지를 클리어한 사람) / i번째 스테이지에 도달한 사람 // i번째 스테이지에 있는 사람 / i번째 스테이지에 도달한 사람 f..

article thumbnail
Level 1. 카드 뭉치

Level 1. 카드 뭉치 첫 번째 뭉치에서 단어를 발견할 경우 첫 번째 인덱스를 증가시키고, 두 번째 뭉치에서 발견할 경우 두 번째 인덱스를 증가시키며 마지막까지 확인하면 된다. 두 인덱스가 범위를 넘어가는 경우만 주의해주면 된다. #include #include using namespace std; string solution(vector cards1, vector cards2, vector goal) { int i = 0, j = 0; size_t nGoal = goal.size(); size_t nCards1 = cards1.size(), nCards2 = cards2.size(); while (i + j < nGoal) if (i < nCards1 && cards1[i] == goal[i + j..

article thumbnail
Level 1. 옹알이 (2)

Level 1. 옹알이 (2) 정규 표현식을 이용하여 해결했다. 각 단어를 숫자 하나로 교체한다. 교체된 숫자가 없으면 발음이 불가능한 단어다. 남은 알파벳을 제거한다. 제거된 알파벳이 있으면 발음이 불가능한 단어다. 연속된 숫자를 제거한다. 연속된 숫자가 있으면 발음이 불가능한 단어다. #include #include #include #include #include using namespace std; int solution(vector babbling) { int answer = 0; unordered_map words{{"aya", "0"}, {"ye", "1"}, {"woo", "2"}, {"ma", "3"}}; for (string s : babbling) { size_t length = s.l..

article thumbnail
Level 1. 명예의 전당 (1)

Level 1. 명예의 전당 (1) 매순간 최저점을 뽑기 위해 Min Heap을 유지하는 우선순위 큐를 사용해 해결했다. 우선순위 큐에 기본값인 vector 컨테이너를 사용하면 pop()할 때마다 O(k) 만큼의 시간이 소요된다. 이 문제는 매번 pop()을 해야 하므로 맨 앞 원소의 삭제도 O(1)에 처리하는 deque을 사용했다. #include #include #include #include using namespace std; vector solution(int k, vector score) { size_t size = score.size(); vector answer(size); priority_queue prque; for (int i = 0; i < size; ++i) { if (prque...

article thumbnail
Level 1. 완주하지 못한 선수

Level 1. 완주하지 못한 선수 중복 키를 저장할 수 있고 정렬을 유지하지 않는 unordered_multiset을 이용해 해결했다. 완주한 참가자를 모두 제거한 후 마지막 남은 참가자가 완주에 실패한 참가자이다. #include #include #include using namespace std; string solution(vector participant, vector completion) { unordered_multiset umset(participant.begin(), participant.end()); for (string& s : completion) umset.erase(umset.find(s)); return *umset.begin(); } 정렬하여 다른 이름이 나올 때까지 비교하는..

검색 태그