728x90
https://www.acmicpc.net/problem/12789
12789번: 도키도키 간식드리미
인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두
www.acmicpc.net
Sad 조건
"대기열 사람들은 라인에 들어갈 수 있지만, 라인에서 대기열로 복귀는 불가능하다." 라는 조건이 있었기 때문에 두말 할 필요 없이 큐와 스택을 사용했다.
대기열은 큐, 한 줄로 설 수 있는 라인은 스택으로 구현하였다.
Sad가 되는 조건은 대기열에서 라인으로 어떤 사람이 들어갈 때, 현재 가장 앞에 있는 사람보다 그 값이 큰 경우로 지정했다. 다시 대기열로 돌아갈 수 없어 순서 조정이 안되기 때문에 이런 경우 절대 순서대로 입장할 수 없기 때문이다.
전체 코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Queue<Integer> wait = new LinkedList<>();
Stack<Integer> oneline = new Stack<>();
for (int i = 0; i < N; i++) {
wait.offer(Integer.parseInt(st.nextToken()));
}
int cnt = 1;
while(!wait.isEmpty()) {
if(wait.peek() == cnt) {
wait.poll();
cnt++;
} else if(!oneline.isEmpty() && oneline.peek() == cnt) {
oneline.pop();
cnt++;
} else {
int n = wait.poll();
if(!oneline.isEmpty() && oneline.peek() < n) {
System.out.println("Sad");
System.exit(0);
} else {
oneline.add(n);
}
}
}
System.out.println("Nice");
}
}
반응형
'JAVA > 문제 풀이' 카테고리의 다른 글
백준 400문제 달성 (0) | 2023.08.16 |
---|---|
[백준 / BOJ] 2304번 : 창고 다각형 (JAVA) (0) | 2023.08.16 |
[백준 / BOJ] 1158번 : 요세푸스 문제 (JAVA) (0) | 2023.08.14 |
[백준 / BOJ] 14940번 : 쉬운 최단거리 (JAVA) (0) | 2023.08.13 |
[백준 / BOJ] 25757번 : 임스와 함께하는 미니게임 (JAVA) (0) | 2023.08.13 |