Make Unreal REAL.
article thumbnail
Level 1. 크레인 인형뽑기 게임

Level 1. 크레인 인형뽑기 게임 큐의 배열을 이용해 인형 뽑기 머신을 클래스로 추상화시켜 해결했다. 어려운 문제는 아니었고 카카오에서 내는 시뮬레이션 문제 중에 재밌는 것들이 많은 것 같다. #include #include #include #include using namespace std; class ClawMachine { private: vector board; public: ClawMachine(vector& board) : board(vector(board.size())) { for (vector row : board) for (int i = 0; i board[i].emplace(row[i]); } int pull(int ..

article thumbnail
Level 1. 키패드 누르기

Level 1. 키패드 누르기 어렵지도 않고 보자마자 어떻게 구현해야 할지 감이 잡혀서 꽤 재밌는 문제였다. 이차원 좌표를 저장하는 Pos 구조체를 만들고 연산자 오버로딩을 이용해 각 번호의 거리를 계산하는 함수를 구현해 해결했다. #include #include using namespace std; struct Pos { int x; int y; int operator - (const Pos& p) { return abs(x - p.x) + abs(y - p.y); } }; Pos position(int key) { key = (key == 0) ? 11 : key; return Pos{--key % 3, key / 3}; } int distance(int x, int y) { return positi..

article thumbnail
Level 1. [1차] 다트 게임

Level 1. [1차] 다트 게임 문자열을 문자로 순회하고 isdigit() 함수를 활용했다. #include #include #include #include using namespace std; int solution(string dartResult) { char prev = '\0'; vector points; for (char c : dartResult) { if (isdigit(c)) { if (isdigit(prev)) points.back() = points.back() * 10 + (c - '0'); else points.emplace_back(c - '0'); } else if (c == '#') { points.back() *= -1; } else if (c == '*') { point..

article thumbnail
Level 1. 체육복

Level 1. 체육복 굉장히 난잡하게 풀었다. 입출력 예시가 오름차순으로 되어 있어서 정렬된 상태로 주어지는 줄 알았는데 아닌 경우도 있어서 정렬을 해야했다. 탐욕법을 하되 작은 수부터 처리해야 하기 때문이다. 첫 번째 for문은 여벌을 가진 학생 중 도난당한 학생을 제거하는 부분이다. 번호가 작은 학생부터 앞번호, 뒷번호 차이가 ±1 인 경우를 세어 해결했다. #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int nLost; vector t_lost; sort(lost.begin(), lost.end()); sort(reserve.begin(), reserve.end())..

article thumbnail
Level 1. 문자열 나누기

Level 1. 문자열 나누기 처음에 문제의 조건을 x가 아닌 다른 글자들이 아니라 x가 아닌 다른 글자들 중으로 잘못 이해하여 정답률이 31%가 나왔다. // 이 코드는 틀린 풀이이다. #include #include #include #include using namespace std; int solution(string s) { int answer = 0; unordered_map umap; for (int i = 0; i < s.length(); ++i) { ++umap[s[i]]; int minCount = INT_MAX; for (pair pr : umap) { if (pr.second == minCount) { s = s.substr(i + 1); ++answer; umap.clear(); i..

article thumbnail
Level 1. 기사단원의 무기

Level 1. 기사단원의 무기 약수의 개수를 효율적으로 구하는 것이 중점인 문제였다. 나는 num의 제곱근만큼 순회하면서 나머지 연산을 이용해 계산하였다. #include #include using namespace std; int getNumberOfDivisor(int num) { int last = sqrt(num); int count = (pow(last, 2) == num) ? -1 : 0; for (int i = 1; i

검색 태그