๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 2890_์นด์•ฝ

๋ฟŒ์•ผ._. 2024. 1. 4. 21:25

Silver V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/2890)

< ์นด์•ฝ >

 

๋ฌธ์ œ ํ’€์ด 

 

F์˜ ์œ„์น˜์™€ ๋งˆ์ง€๋ง‰ ์ˆซ์ž์˜ ์œ„์น˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•œ ํ›„ ArrayList์— ์ €์žฅํ•œ๋‹ค. ์ฐจ์ด๊ฐ€ ์ž‘์€ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•œ๋‹ค. ๊ทธ ํ›„ ์ˆœ์„œ๋Œ€๋กœ ๋“ฑ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 

 

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

public class _2890_ { // ์นด์•ฝ

	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 = new StringTokenizer(bf.readLine());

		int r = Integer.parseInt(st.nextToken());
		int c = Integer.parseInt(st.nextToken());

		ArrayList<int[]> arr = new ArrayList<>();

		for (int i = 0; i < r; i++) {
			String str = bf.readLine();
			int start = -1;
			int num = -1;
			int diff = 0;
			for (int j = 0; j < c; j++) {
				char x = str.charAt(j);
				if (Character.isDigit(x)) {
					start = j;
					num = x - '0';
				} else if (x == 'F') {
					diff = c - 1 - start;
				}
			}
			if (num != -1) {
				arr.add(new int[] { num, diff });
			}
		}

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

		int result[] = new int[10];
		int diff = 0;
		int idx = 0;
		for (int i = 0; i < 9; i++) {
			if (diff != arr.get(i)[1]) {
				result[arr.get(i)[0]] = ++idx;
				diff = arr.get(i)[1];
			} else {
				result[arr.get(i)[0]] = idx;
			}
		}

		for (int i = 1; i < 10; i++) {
			bw.write(result[i] + "\n");
		}

		bw.flush();
	}
}
๋ณ€์ˆ˜)
r, c : ํ–‰, ์—ด
arr : ArrayList <int [ํŒ€ ๋ฒˆํ˜ธ, ์ฐจ์ด]>
str : ํ–‰
start, num, diff : ๋งˆ์ง€๋ง‰ ์ˆซ์ž ์œ„์น˜, ํŒ€ ๋ฒˆํ˜ธ, F์™€ ๋งˆ์ง€๋ง‰ ์ˆซ์ž ์œ„์น˜ ์ฐจ์ด
result : ๋“ฑ์ˆ˜
diff, idx : ์•ž ํŒ€์˜ ๊ฒฐ์Šน์„ ๊ณผ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ, ๋“ฑ์ˆ˜

 

์œ„์„ฑ ์ง€๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ๊ฐ ํŒ€ ๋ฒˆํ˜ธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์™€ F์˜ ์ธ๋ฑ์Šค ์ฐจ์ด๋ฅผ ๊ตฌํ•ด ArrayList์— ์ €์žฅํ•œ๋‹ค. ๊ทธ ํ›„ ์ฐจ์ด๊ฐ€ ์ž‘์€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ArrayList๋ฅผ ๋ณด๋ฉด์„œ ๋“ฑ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.