🌞Algorithm/🔥Baekjoon
[Baekjoon] 9609_PSU Campuses
뿌야._.
2025. 8. 11. 15:30
문제(출처: https://www.acmicpc.net/problem/9609)
< PSU Campuses >
문제 풀이
HashMap을 사용하여 캠퍼스 간의 거리를 저장하여 구한다. 이때, 양방향으로 저장한다.
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.HashMap;
public class _9609_ { // PSU Campuses
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine());
HashMap<String, Integer> map = new HashMap<String, Integer>() {
{
put("Hatyai Pattani", 103);
put("Hatyai Suratthani", 329);
put("Hatyai Phuket", 466);
put("Hatyai Trang", 148);
put("Pattani Suratthani", 408);
put("Pattani Trang", 260);
put("Pattani Phuket", 577);
put("Pattani Hatyai", 103);
put("Phuket Pattani", 577);
put("Phuket Trang", 312);
put("Phuket Suratthani", 287);
put("Phuket Hatyai", 466);
put("Suratthani Trang", 226);
put("Suratthani Hatyai", 329);
put("Suratthani Pattani", 408);
put("Suratthani Phuket", 287);
put("Trang Hatyai", 148);
put("Trang Pattani", 260);
put("Trang Phuket", 312);
put("Trang Suratthani", 226);
}
};
for (int i = 0; i < n; i++) {
String str = bf.readLine();
int d = 0;
String start = "Hatyai", end = "";
for (int j = 0; j < str.length(); j++) {
if (str.charAt(j) == 'H') {
end = "Hatyai";
} else if (str.charAt(j) == 'P') {
end = "Pattani";
} else if (str.charAt(j) == 'S') {
end = "Suratthani";
} else if (str.charAt(j) == 'K') {
end = "Phuket";
} else {
end = "Trang";
}
d += map.get(start + " " + end);
start = end;
}
d += map.get(start + " " + "Hatyai");
bw.write("Case " + (i + 1) + ": " + d + "\n");
}
bw.flush();
}
}
변수)
n : 임무의 개수
map : 캠퍼스 간의 거리
str : 입력값
d : 거리
start, end : 출발, 도착
임무의 개수를 입력받아 임무의 개수만큼 다음 과정을 반복한다. HashMap에는 미리 각 캠퍼스 간의 거리를 저장해 둔다.
1) 임무 입력
2) 임무를 탐색하며 캠퍼스를 이동하는데 걸리는 거리를 구한다. 이때, 시작과 끝은 Hatyai이어야 한다.
3) 이동하는데 걸리는 거리를 출력한다.
