๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€] 17966๋ฒˆ : Graph and Cycles - JAVA[์ž๋ฐ”]

๋ฐ˜์‘ํ˜•
  • Algorithm Problem

๋ฐ˜์‘ํ˜•
  • Solving
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class BOJ17966GraphAndCycles { // 17966 Graph and Cycles
	static final int INF = Integer.MAX_VALUE;
	static int N, M;
	static List<Integer>[] arr;
	static long ans;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		N = Integer.parseInt(br.readLine());
		ans = 0;
		M = N * (N - 1) / 2; // ์™„์ „ ๊ทธ๋ž˜ํ”„์ž„์„ ์˜๋ฏธํ•จ.
		arr = new ArrayList[N + 1];
		for (int i = 1; i < N + 1; i++)
			arr[i] = new ArrayList<>();
		
		for (int i = 0; i < M; i++) { // ๊ฐ„์„  ๊ฐฏ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ๋ณ„ list๋ฅผ ๋ฐ›๋Š”๋‹ค.
			st = new StringTokenizer(br.readLine());
			int u = Integer.parseInt(st.nextToken());
			int v = Integer.parseInt(st.nextToken());
			int w = Integer.parseInt(st.nextToken());
			arr[u].add(w);
			arr[v].add(w);
		}

		// ๋ชจ๋“  ๊ฐ„์„ ์„ ์ง€๋‚˜๋Š”(๋…ธ๋“œ ์ค‘๋ณต์œผ๋กœ ๋“ค์–ด์™€๋„ ๋จ) ์‚ฌ์ดํด ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
		// ํ™€์ˆ˜ ๊ฐœ์˜ ๋…ธ๋“œ๋ผ๋„ ์ •ํ•ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด ํ•œ๋ถ“๊ทธ๋ฆฌ๊ธฐ ๊ฐ€๋Šฅ
		// ์™„์ „ ๊ทธ๋ž˜ํ”„์ž„๋„ ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ง„ํ–‰๋˜๋Š” ๊ฐ„์„ ์€ ์ง์ˆ˜
		// ๊ฐ ๋…ธ๋“œ๋ณ„๋กœ ์ด ๊ฐœ์ˆ˜-1๊ฐœ ๋งŒํผ ๊ฐ„์„ ์„ ๊ฐ–๋Š”๋‹ค.
		// ๋ฌด๋ฐฉํ–ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ, ์‹œ์ , ๋์  ๋ฐฐ์—ด์— ๊ฐ€์ค‘์น˜ ์ถ”๊ฐ€
		// f(e1, e2) ๋Š” ๊ฐ„์„ ๊ฐ„์˜ ๊ฐ€์ค‘์น˜ ์ตœ๋Œ€๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. << ๋‹ค๋งŒ,   
		
		for (int i = 1; i < N + 1; i++) {
			Collections.sort(arr[i]); // bestSol <- ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ์„ ํƒ
			for (int j = 1; j < N; j += 2) { // ์ค‘๋ณต์„ ํƒ ํšŒํ”ผ
				ans += arr[i].get(j);
			} // N๊ฐœ(ํ™€์ˆ˜)์˜ ๋…ธ๋“œ๋Š” ๊ฐ€ ์žˆ์œผ๋ฉด, ๊ฐ ๋…ธ๋“œ๋Š” N-1๊ฐœ ๋…ธ๋“œ(์ง์ˆ˜)๋ฅผ ๊ฐ–๋Š”๋‹ค.
		}  
//		print(arr);

		System.out.println(ans);
		br.close();
	}

	private static void print(List<Integer>[] a) {
		StringBuilder tt = new StringBuilder();
		for (int i = 1; i < arr.length; i++) {
			for (int j = 0; j < arr[i].size(); j++) {
				tt.append(arr[i].get(j)).append(" ");
			}
			tt.append("\n");
		}
		System.out.println(tt);
	}
}
  • Review

 ๊ณจ๋“œ๊ฐ€ ์ต์ˆ™ํ•ด์กŒ๋‹ค๊ณ , ๋ฌดํ„ฑ๋Œ€๊ณ  ๋“ค์ด๋ฐ€์ง€ ๋ง์ž. ์™„์ „ ํƒ์ƒ‰์ด๋‚˜, ๊ตฌํ˜„์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ์†์œผ๋กœ ๋จผ์ € ํŒจํ„ด์„ ์ฐพ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ์ถฉ๋ถ„ํžˆ ๊ฐ–์ž.

๋ฐ˜์‘ํ˜•

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 5546๋ฒˆ : ํŒŒ์Šคํƒ€ - JAVA[์ž๋ฐ”]  (0) 2022.04.28