

-Code
import java.io.*;
import java.util.*;
public class BOJ33904 {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
List<String> lines = new ArrayList<>();
// 라인이 ioe 전까지 담기
String line;
while ((line = br.readLine()) != null) {
lines.add(line);
}
// 변수 순서대로 담기
Set<Character> varSet = new HashSet<>();
String lastLine = lines.get(lines.size() - 1).trim();
for (char c : lastLine.toCharArray()) {
if (Character.isLetter(c)) {
varSet.add(c);
}
}
// 변수 줄을 제외하고 변수와 가까운 for문 부터 검사
List<String> answer = new ArrayList<>();
Set<Character> useVarSet = new HashSet<>();
for (int i = lines.size() - 2; i >= 0 ; i--) {
char var = lines.get(i).trim().charAt(9);
// 사용할수 있는 변수와 사용된 변수 체크
if (varSet.contains(var) && !useVarSet.contains(var)) {
useVarSet.add(var);
answer.add(lines.get(i).trim());
}
}
// 거꾸로 저장했으니 뒤집기
Collections.reverse(answer);
// 마지막줄 더하기
answer.add(lastLine);
StringBuilder sb = new StringBuilder();
for (int idx = 0; idx < answer.size(); idx++) {
// 빈칸 추가
sb.append(" ".repeat(idx))
.append(answer.get(idx))
.append("\n");
}
System.out.println(sb);
}
}
푸는데 처음에는 전부 받고 받아서 마지막줄 검사하면서 맨 위 for문을 출력하도록 작성했으나 틀렸습니다.
그래서 찾아보니 변수가 있는 마지막 줄에 가까이 있고 해당 변수에 포함된 for문을 남겨야 해서 역순으로 체크를 해야 했고 그래서 그 뒤 바로 뒤집어 출력해야 했습니다. 이걸 알고 수정해서 통과했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 33904번 삼각형 (1) | 2026.04.05 |
|---|---|
| [프로그래머스/Java] 오픈채팅방 (0) | 2026.04.05 |
| [백준/Java] 7484번 Bowling (0) | 2026.04.03 |
| [백준/Java] 9727번 Mini Sudoku X (0) | 2026.04.03 |
| [프로그래머스/Java] 주차 요금 계산 (0) | 2026.04.02 |