목록전체 글 (287)
개발자는 기록이 답이다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cGUooB/btswbEyjqRR/IfXRKixSLVHVgtW1vu7i3k/img.png)
6. 공주구하기 예시 입력 1 8 3 예시 출력 1 7 내가 푼 풀이(Time: 165ms Memory: 27MB) Q 원소의 사이즈가 1일때까지 반복문을 돌면서 1)cnt가 3일때 빼주고 cnt=0으로 재 세팅하고, 2)나머지는 다시 뒤로 넣습니다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public int solution(int n, int k) { Queue queue = new LinkedList(); for (int i = 1; i 1) { int front = queue.poll(); cnt++; if (cnt == k) cnt = 0; else queue...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b4jPSm/btsv91glxei/5NGiNP1LMZ4c2pCXKMV2u1/img.png)
5. 쇠막대기 예시 입력 1 ()(((()())(())()))(()) 예시 출력 1 17 예시 입력 2 (((()(()()))(())()))(()()) 예시 출력 2 24 문제를 이해하는 것이 중요했다. 개인적으로 이렇게 길고 그림이 나오면 읽는데 집중이 안되는데, 이것도 연습이 필요하겠지 코드상으로는 간단한데, 어떻게 풀지 생각해낼 수 있느냐가 중요하다 스택을 생성하고 여는 괄호를 만나면 무조건 push 해야합니다. 그리고 닫는 괄호를 만나면 1) 레이저의 쌍으로 닫는 괄호 2) 막대기의 끝을 알리는 괄호 2가지중에 어떤거인지 판단해야합니다. 어떻게 판단하냐면, 바로 앞에꺼가 여는 괄호라면 레이저입니다. 그때 막대기를 자르는 겁니다. 그게 아니라면 그냥 막대기입니다. 다시 말해서,닫는 괄호를 만났을때 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/54e3W/btsv5m64D26/pVxwlHKTfskMzz7ouBYvPk/img.png)
4. 후위식 연산(postfix) 예시 입력 1 352+*9- 예시 출력 1 12 후의식이란 숫자가 앞에있고 연산자만 뒤에 빠지는 것 입니다. 중의식 : 5+3, 5-3 후의식 : 53+, 53- 후의식으로 할때 빼기를 당하는 숫자는 왼쪽에 있는 숫자입니다. 숫자면 stack에 푸시하고 연산자를 만나면 꺼냅니다. 먼저 뺀게 오른쪽, 나중에 뺀게 왼쪽, 왼쪽에서 오른쪽을 빼야 합니다. 그래서 후의식을 다 연산하고 나면 스택에 숫자 딱 하나 남아있습니다. 강의 풀이 (Time: 155ms Memory: 27MB) import java.util.Scanner; import java.util.Stack; public class Main { public int solution(String str) { int an..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bNsVdJ/btswgUANyJ3/aZc0rzoVb2L8bSUheBnxHK/img.png)
3. 크레인 인형뽑기(카카오) 예시 입력 1 5 0 0 0 0 0 0 0 1 0 3 0 2 5 0 1 4 2 4 4 2 3 5 1 3 1 8 1 5 3 5 1 2 1 4 예시 출력 1 4 크레인 인형뽑기는 카카오 기출문제이다. 스택을 사용해서 푸는데, 크레인이 움직인 위치를 하나씩 처리해서 인형이 몇개가 터졌는지 개수를 구하면된다 내가 푼 풀이(Time: 198ms Memory: 30MB) import java.util.Scanner; import java.util.Stack; public class Main { public int solution(int n, int[][] board, int m, int[] moves) { int cnt = 0; Stack stack = new Stack(); for ..