목록팁스타운 (2)
N

간단하게 풀 수 있는 문제다..! 우선 while문으로 계속 반복한다. a = (a / 2) + (a % 2) b = (b / 2) + (b % 2) 를 넣어주도록 한다. 그러면 이겼을 때 다음 라운드에서 받을 수 있는 차례가 나오게 된다. 만약 a와 b가 같다면 현재 라운드에서 만나는 것이므로 answer을 리턴해주면 끝..! #include using namespace std; int solution(int n, int a, int b) { int answer = 0; while(1) { a = (a / 2) + (a % 2); b = (b / 2) + (b % 2); answer++; if(a == b) return answer; } }

스택을 이용하여 풀면 쉽게 해결할 수 있다. s.size()만큼 반복문을 돌면서 스택에 넣어주자. 만약 스택이 비어있거나 스택의 top이 현재 s[i]와 같지 않다면 스택에 s[i] 문자를 넣어주자..! 하지만 스택의 top이 s[i]와 같다면 pop()을 해주어 같은 문자를 제거하면 된다. 반복문을 다 돌게 되었을 때, 스택이 비어있다면 모든 문자를 짝지어서 제거했기 때문에 1을 반환, 비어있지 않으면 문자가 남아있다는 뜻이므로 0을 반환하면 된다..! #include #include #include using namespace std; int solution(string s) { int answer = 0; stack stk; for(int i = 0; i < s.size(); i++) { if(st..