개발자 미니민의 개발스터디

[백준 JAVA] 12789번 풀이 - 도키도키 간식드리미

by mini_min
package baekjoon;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class _12789 {
public static void main(String[] args) throws IOException {
//대기열의 왼쪽에 1열로 설 수 있는 공간 존재.
//맨 앞 사람만 이동이 가능하다.
//한 사람씩 (맨 앞 사람씩 1열로 줄 서는 공간 o)
// if ) 5 4 1 3 2
// 1 | 5 4 | 3 2
// 2 | 5 4 3
// 3 | 5 4
// 4 | 5
// 5 |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<arr.length; i++){
int token = Integer.parseInt(st.nextToken());
arr[i] = token;
}
int number = 0;
Stack<Integer> stack = new Stack<>();
while(number<n) {
number++;
//(1)스택에서 먼저 맨 처음값 체크. 있으면 꺼내버리기.
if(!stack.isEmpty()) {
if(stack.peek().equals(number)) {
stack.pop(); //꺼내기.
continue;
}
}
//(2)두번째로 배열값 체크!
for(int i=0; i<arr.length;i++) {
if(arr[i] != 0 && arr[i] != number) { //스택에 들어간 값이 아닐때,
stack.push(arr[i]); //스택에 넣고
arr[i] = 0; //초기화.
} else if (arr[i] == number) {
arr[i] = 0;
break;
}
}
}
if(stack.isEmpty()) {
bw.write("Nice");
} else {
bw.write("Sad");
}
bw.flush();
bw.close();
}
}

 

풀이 

점점 자료구조에 익숙해지고 있다~~!

이제 습관처럼 어떻게 풀어야할지 생각부터 하면서 코드를 짜기 시작했다.. :) 후후 

아직 많이 부족하지만 이제 "코테 찍먹했다" 정도에 가까워지는 것 같다! 

 

 

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기