[백준 05587] 카드 캡터 상근이 [Java]
2025. 8. 5. 16:34ㆍPS 풀이/Baekjoon Online Judge
문제
5587번: 카드 캡터 상근이
boj.ma
풀이
문제 요약
상근이와 근상이가 번갈아가며 가지고 있는 가장 작으면서도, 상대방보다 큰 카드를 내며 모든 카드를 다 내는 게임을 시뮬레이션 해야 한다.
아이디어
카드들을 TreeSet에 담고, 차례에 관계없이 마지막으로 낸 카드를 기준으로 작은 카드를 내야 하는 것에 유의하며 구현하면 된다.
// Solve
int prevCard = -1;
boolean sangTurn = true;
while (!sang.isEmpty() && !geun.isEmpty()) {
if (sangTurn) {
Integer sangCurCard = sang.higher(prevCard);
if (sangCurCard == null) {
prevCard = -1;
} else {
sang.remove(sangCurCard);
prevCard = sangCurCard;
}
} else {
Integer geunCurCard = geun.higher(prevCard);
if (geunCurCard == null) {
prevCard = -1;
} else {
geun.remove(geunCurCard);
prevCard = geunCurCard;
}
}
sangTurn = !sangTurn;
}
마지막에는 각 TreeSet의 크기를 출력하면 된다.
// Output
System.out.println(geun.size());
System.out.println(sang.size());
}
풀이 시간
20분
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/05587.java
problem-solving/baekjoon-online-judge/easy/05587.java at main · rogi-rogi/problem-solving
Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.
github.com
'PS 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
| [백준 09324] 진짜 메시지 [Java] (0) | 2025.08.09 |
|---|---|
| [백준 29756] DDR 체력 관리 [Java] (2) | 2025.08.06 |
| [백준 26264] 빅데이터? 정보보호! [Java] (3) | 2025.08.03 |
| [백준 01622] 공통 순열 [Java] (1) | 2025.08.02 |
| [백준 22993] 서든어택 3 [Java] (0) | 2025.08.01 |