https://www.acmicpc.net/problem/12789
- 예제 입력1
5
5 4 1 3 2
- 예제 출력1
Nice
- 문제 접근
- 번호표 순서대로만 간식을 받을 수 있음 → Nice 출력
- 즉, 번호 순서대로가 아니면 간식을 받지 못함 → Sad 출력
- 입력
- 첫째 줄 : 학생들의 수 N (1 <= N <= 1,000)
- 둘째 줄 : 모든 학생들의 번호표 (1, 2, ..., N)
- 출력
- 무사히 간식을 받을 수 있으면 Nice, 그렇지 않으면 Sad 출력
- 문제 해결
- 번호표(numberSequence)는 1번부터 시작, N번만큼 반복
- 번호표와 숫자가 같으면 번호표 +1, 아니면 Stack Push
- while문 조건 : Stack이 비어있지 않고, peek()이 번호표와 같으면 번호표 + 1, Stack Pop
- 최종적으로 Stack이 비어있으면 Nice, 아니면 Sad
- 기존 풀이 [메모리 : 14,672 KB / 시간 : 112 ms]
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> waitingLine = new Stack<>();
int N = Integer.parseInt(br.readLine());
int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int numberSequence = 1;
for(int i = 0; i < N; i++){
int number = input[i];
if(numberSequence == number) {
numberSequence++;
} else {
waitingLine.push(number);
}
while(!waitingLine.isEmpty() && waitingLine.peek() == numberSequence){
numberSequence++;
waitingLine.pop();
}
}
System.out.println(waitingLine.isEmpty() ? "Nice" : "Sad");
}
- Stream 풀이 [메모리 : KB / 시간 : ms]
'Coding Test > Step16. 스택, 큐, 덱' 카테고리의 다른 글
[Java] 7단계. 카드 2 [2164번] (0) | 2024.11.11 |
---|---|
[Java] 6단계. 큐 2 [18258번] (0) | 2024.11.11 |
[Java] 4단계. 균형잡힌 세상 [4949번] (1) | 2024.11.09 |
[Java] 3단계. 괄호 [9012번] (0) | 2024.11.09 |
[Java] 2단계. 제로 [10773번] (0) | 2024.11.08 |