🌞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) 이동하는데 걸리는 거리를 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 31637_ダンス (Dance)  (2) 2025.08.13
[Baekjoon] 4865_Shortest Prefixes  (2) 2025.08.12
[Baekjoon] 3443_Reaux! Sham! Beaux!  (4) 2025.07.30
[Baekjoon] 9787_Olympic Games Ranking  (4) 2025.07.29
[Baekjoon] 9491_Politics  (2) 2025.07.28