문제(출처: https://www.acmicpc.net/problem/6325)
< Definite Values >
문제 풀이
variable1 = variable2
variable2가 이미 선언되어 있다면 variable1이 확실한 값을 가지게 된다. HashSet을 사용하여 variable2가 있다면 variable1을 넣고, 없다면 variable1을 제거한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;
public class _6325_ { // Definite Values
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t = 0;
int cnt = 1;
while ((t = Integer.parseInt(bf.readLine())) != 0) {
HashSet<String> set = new HashSet<>();
set.add("a");
for (int i = 0; i < t; i++) {
st = new StringTokenizer(bf.readLine());
String a = st.nextToken();
st.nextToken();
String b = st.nextToken();
if (set.contains(b)) {
set.add(a);
} else {
set.remove(a);
}
}
ArrayList<String> list = new ArrayList<>(set);
Collections.sort(list);
bw.write("Program #" + (cnt++) + "\n");
if (list.size() == 0) {
bw.write("none\n");
} else {
for (int i = 0; i < list.size(); i++) {
bw.write(list.get(i) + " ");
}
bw.write("\n");
}
bw.write("\n");
}
bw.flush();
}
}
변수)
t : 라인 수
cnt : 케이스
set : HashSet <String>
a, b : variable1, variable2
list : ArrayList <String>
라인 수가 0이 아닐 때까지 다음 과정을 반복한다.
1) 변수 a는 일정한 값을 가지므로 HashSet에 a를 저장한다.
2) t라인만큼 "variable1 = variable2"를 입력받는다. variable2가 HashSet에 있다면 확실한 값을 가지므로 variable1을 HashSet에 저장하고, 없다면 확실한 값을 가지지 않으므로 HashSet에서 제거한다.
3) HashSet 값을 ArrayList에 저장하여 정렬한다.
4) 테스트 케이스 번호와 ArrayList 값을 출력한다. 이때, 아무 값이 없다면 "none"을 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 21030_Frequent Alphabet (2) | 2025.05.16 |
---|---|
[Baekjoon] 10770_Rövarspråket (1) | 2025.05.15 |
[Baekjoon] 14472_休憩スペース (Refreshment Area) (1) | 2025.05.14 |
[Baekjoon] 15464_The Bovine Shuffle (0) | 2025.05.12 |
[Baekjoon] 9626_크로스워드 퍼즐 (0) | 2025.05.09 |