[Gold 5] [Java] 도어맨 (5002 번)
by HeshAlgo728x90
Java Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String input = br.readLine();
// 남녀입장 차이가 n초과 될시 임시 대기열에 넣을 큐
Queue<Character> waittingQ = new LinkedList<Character>();
int manCnt = 0;
int womanCnt = 0;
for (int i = 0; i < input.length(); i++) {
char person = input.charAt(i);
// 임시 대기열이 비어있지 않다면
if (!waittingQ.isEmpty()) {
char waittingPerson = waittingQ.peek();
// 임시 대기열에 있는 사람이 남자라면
if (waittingPerson == 'M') {
// 남녀 차이가 n이하라면
if (Math.abs((manCnt + 1) - womanCnt) <= n) {
manCnt++;
waittingQ.poll();
}
}
// 임시 대기열에 있는 사람이 여자라면
else {
if (Math.abs(manCnt - (womanCnt + 1)) <= n) {
womanCnt++;
waittingQ.poll();
}
}
}
if (person == 'M') {
// 남자와 여자 차이가 n이하라면
if (Math.abs((manCnt + 1) - womanCnt) <= n) {
manCnt++;
}
// 대기선이 비어있다면
else if (waittingQ.isEmpty()) {
waittingQ.add(person);
}
// 차이가 n초과이고 대기선도 비어있지않다면
else {
break;
}
} else {
if (Math.abs(manCnt - (womanCnt + 1)) <= n) {
womanCnt++;
} else if (waittingQ.isEmpty()) {
waittingQ.add(person);
} else {
break;
}
}
}
System.out.println(manCnt + womanCnt);
}
}
|
cs |
'알고리즘 > 백준 (자료구조)' 카테고리의 다른 글
[Gold 4] [Java] 생태학 (4358 번) (0) | 2020.12.17 |
---|---|
[Silver 2] [Java] 외계인의 기타 연주 (2841 번) (0) | 2020.11.14 |
[Gold 4] [Java] 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) (14698 번) (0) | 2020.11.07 |
[Gold 5] [Java] 크게 만들기 (2812 번) (1) | 2020.11.06 |
[Gold 5] [Java] 탑 (2493 번) (0) | 2020.10.31 |
블로그의 정보
꾸준히 공부하는 개발 노트
HeshAlgo