๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10442_Rank Order

๋ฟŒ์•ผ._. 2025. 7. 24. 11:13
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/10442)

< Rank Order >

 

๋ฌธ์ œ ํ’€์ด 

 

๋‹ค์Œ ์กฐ๊ฑด์„ ํ™œ์šฉํ•˜์—ฌ ๋‘ ๋ช…์˜ ์‹ฌ์‚ฌ์œ„์›์˜ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•ด, ์ˆœ์œ„๋ฅผ ๊ตฌํ•œ๋‹ค.

๊ฐ’์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ ๋˜๋Š” ์ƒˆ ์ค„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

 

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.Comparator;
import java.util.StringTokenizer;

public class _10442_ { // Rank Order

	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;

		String str;
		int idx = 1;

		st = new StringTokenizer(bf.readLine());

		while (true) {
			if (!st.hasMoreTokens()) {
				str = bf.readLine();
				if (str == null) {
					break;
				}
				if (str.equals("")) {
					continue;
				}
				st = new StringTokenizer(str);
			}
			if (idx > 1) {
				bw.write("\n");
			}
			bw.write("Case " + (idx++) + ": ");

			int n = Integer.parseInt(st.nextToken());

			ArrayList<int[]> first = new ArrayList<>();
			int cnt = 0;

			while (first.size() < n) {
				if (!st.hasMoreTokens()) {
					str = bf.readLine();
					if (str.equals("")) {
						continue;
					}
					st = new StringTokenizer(str);
				}
				first.add(new int[] { Integer.parseInt(st.nextToken()), cnt++ });

			}

			Collections.sort(first, new Comparator<int[]>() {
				@Override
				public int compare(int[] o1, int[] o2) {
					return o2[0] - o1[0];
				}
			});

			ArrayList<int[]> second = new ArrayList<>();
			cnt = 0;
			while (second.size() < n) {
				if (!st.hasMoreTokens()) {
					str = bf.readLine();
					if (str.equals("")) {
						continue;
					}
					st = new StringTokenizer(str);
				}
				second.add(new int[] { Integer.parseInt(st.nextToken()), cnt++ });
			}

			Collections.sort(second, new Comparator<int[]>() {
				@Override
				public int compare(int[] o1, int[] o2) {
					return o2[0] - o1[0];
				}
			});

			boolean flag = false;
			for (int i = 0; i < n; i++) {
				if (first.get(i)[1] != second.get(i)[1]) {
					flag = true;
					bw.write((i + 1) + "");
					break;
				}
			}
			if (!flag) {
				bw.write("agree");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
str : ์ž…๋ ฅ๊ฐ’
idx : ์ผ€์ด์Šค ๋ฒˆํ˜ธ
n : ์ฐธ๊ฐ€์ž ์ˆ˜
first, second : ์ฒซ ๋ฒˆ์งธ ์‹ฌ์‚ฌ์œ„์›์˜ ์ ์ˆ˜, ๋‘ ๋ฒˆ์งธ ์‹ฌ์‚ฌ์œ„์›์˜ ์ ์ˆ˜
cnt : ์ฐธ๊ฐ€์ž ๋ฒˆํ˜ธ

 

์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์ด ์—†๋‹ค๋ฉด ์ƒˆ๋กœ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. ์ด๋•Œ, ์ž…๋ ฅ์ด ๋์ด๋ผ๋ฉด ์ข…๋ฃŒํ•œ๋‹ค. ๋์ด ์•„๋‹ˆ๋ผ๋ฉด ์ฐธ๊ฐ€์ž ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฐ ์ฐธ๊ฐ€์ž ์ˆ˜์— ๋งž๊ฒŒ ์ฒซ ๋ฒˆ์งธ ์‹ฌ์‚ฌ์œ„์›์˜ ์ ์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ ์‹ฌ์‚ฌ์œ„์›์˜ ์ ์ˆ˜๋ฅผ ๊ฐ ArrayList์— [์ ์ˆ˜, ์ฐธ๊ฐ€์ž ๋ฒˆํ˜ธ]๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ฐ ArrayList๋ฅผ ์ ์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์ •๋ ฌํ•œ ArrayList ๋‘ ๊ฐœ๋ฅผ ์ˆœ์ฐจ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ฐธ๊ฐ€์ž ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•œ๋‹ค. ๋ชจ๋‘ ์ผ์น˜ํ•˜๋ฉด "agree"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ์ผ์น˜ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ทธ ์ˆœ์œ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 9491_Politics  (2) 2025.07.28
[Baekjoon] 15198_NKD  (2) 2025.07.25
[Baekjoon] 15426_GlitchBot  (3) 2025.07.23
[Baekjoon] 30949_Equal Schedules  (2) 2025.07.22
[Baekjoon] 9400_Calculate the Fence Needed  (3) 2025.07.21