[Algorithm] ๐Ÿš“๋ฐฑ์ค€ 2002 ์ถ”์›”

HaJingJingยท2021๋…„ 7์›” 1์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
88/119

0. ๋ฌธ์ œ

๋Œ€ํ•œ๋ฏผ๊ตญ์„ ๋น„๋กฏํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋‚˜๋ผ์—์„œ๋Š” ํ„ฐ๋„ ๋‚ด์—์„œ์˜ ์ฐจ์„  ๋ณ€๊ฒฝ์„ ๋ฒ•๋ฅ ๋กœ ๊ธˆํ•˜๊ณ  ์žˆ๋‹ค. ์กฐ๊ธˆ๋งŒ ๊ด€์ฐฐ๋ ฅ์ด ์žˆ๋Š” ํ•™์ƒ์ด๋ผ๋ฉด ํ„ฐ๋„ ๋‚ด๋ถ€์—์„œ๋Š” ์ฐจ์„ ์ด ํŒŒ์„ ์ด ์•„๋‹Œ ์‹ค์„ ์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์ฐจ์„ ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋”ฐ๋ผ์„œ ํ„ฐ๋„ ๋‚ด๋ถ€์—์„œ์˜ ์ถ”์›”์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์†Œ๋ฌธ๋‚œ ๋ช…์ฝค๋น„ ๊ฒฝ์ฐฐ ๋Œ€๊ทผ์ด์™€ ์˜์‹์ด๊ฐ€ ์ถ”์›”ํ•˜๋Š” ์ฐจ๋Ÿ‰์„ ์žก๊ธฐ ์œ„ํ•ด ํ•œ ํ„ฐ๋„์— ํˆฌ์ž…๋˜์—ˆ๋‹ค. ๋Œ€๊ทผ์ด๋Š” ํ„ฐ๋„์˜ ์ž…๊ตฌ์—, ์˜์‹์ด๋Š” ํ„ฐ๋„์˜ ์ถœ๊ตฌ์— ๊ฐ๊ฐ ์ž ๋ณตํ•˜๊ณ , ๋Œ€๊ทผ์ด๋Š” ์ฐจ๊ฐ€ ํ„ฐ๋„์— ๋“ค์–ด๊ฐ€๋Š” ์ˆœ์„œ๋Œ€๋กœ, ์˜์‹์ด๋Š” ์ฐจ๊ฐ€ ํ„ฐ๋„์—์„œ ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ฐ๊ฐ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ๋ฅผ ์ ์–ด ๋‘์—ˆ๋‹ค.

N๊ฐœ์˜ ์ฐจ๋Ÿ‰์ด ์ง€๋‚˜๊ฐ„ ํ›„, ๋Œ€๊ทผ์ด์™€ ์˜์‹์ด๋Š” ์ž์‹ ๋“ค์ด ์ ์–ด ๋‘” ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ์˜ ๋ชฉ๋ก์„ ๋ณด๊ณ , ํ„ฐ๋„ ๋‚ด๋ถ€์—์„œ ๋ฐ˜๋“œ์‹œ ์ถ”์›”์„ ํ–ˆ์„ ๊ฒƒ์œผ๋กœ ์—ฌ๊ฒจ์ง€๋Š” ์ฐจ๋“ค์ด ๋ช‡ ๋Œ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋Œ€๊ทผ์ด์™€ ์˜์‹์ด๋ฅผ ๋„์™€ ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ณด์ž.

์ž…๋ ฅ
์ž…๋ ฅ์€ ์ด 2N+1๊ฐœ์˜ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ์ค„์—๋Š” ์ฐจ์˜ ๋Œ€์ˆ˜ N(1 โ‰ค N โ‰ค 1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๋Œ€๊ทผ์ด๊ฐ€ ์ ์€ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง€๊ณ , N+2์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์˜์‹์ด๊ฐ€ ์ ์€ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ๋Š” 6๊ธ€์ž ์ด์ƒ 8๊ธ€์ž ์ดํ•˜์˜ ๋ฌธ์ž์—ด๋กœ, ์˜์–ด ๋Œ€๋ฌธ์ž('A'-'Z')์™€ ์ˆซ์ž('0'-'9')๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๊ฐ™์€ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ํ„ฐ๋„ ๋‚ด๋ถ€์—์„œ ๋ฐ˜๋“œ์‹œ ์ถ”์›”์„ ํ–ˆ์„ ๊ฒƒ์œผ๋กœ ์—ฌ๊ฒจ์ง€๋Š” ์ฐจ๊ฐ€ ๋ช‡ ๋Œ€์ธ์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก ์ฐจ(string)๋ฅผ ๋“ค์–ด์˜ค๋Š” ์ˆœ์„œ(integer)์™€ ํ•จ๊ป˜ hashmap ์ €์žฅ
๐Ÿ’ก ๋‚˜๊ฐ€๋Š” ์ฐจ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆœ์„œ๋ฅผ hashmap์—์„œ ๊บผ๋‚ด์„œ ๋ฐฐ์—ด์— ์ฐจ๋ก€๋กœ ์ €์žฅํ•จ
๐Ÿ’ก ๋ฐฐ์—ด์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ๊ธฐ์ค€์œผ๋กœ ๋’ค๋ฅผ ๋ดค์„ ๋•Œ, ์ž์‹ ๋ณด๋‹ค ์ˆœ์„œ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด, count+1์„ ํ•ด์คŒ

2. ํ•ต์‹ฌ ํ’€์ด

  1. ์ฐจ(string)๋ฅผ ๋“ค์–ด์˜ค๋Š” ์ˆœ์„œ(integer)์™€ ํ•จ๊ป˜ hashmap ์ €์žฅ
HashMap<String, Integer> map = new LinkedHashMap<>();
...
for(int i=1; i<=n; i++) {
	map.put(br.readLine().trim(), i);
}
  1. ๋‚˜๊ฐ€๋Š” ์ฐจ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆœ์„œ๋ฅผ hashmap์—์„œ ๊บผ๋‚ด์„œ ๋ฐฐ์—ด์— ์ฐจ๋ก€๋กœ ์ €์žฅํ•จ
for(int i=0; i<n; i++) {
	out[i] = map.get(br.readLine().trim());
}
  1. ๋ฐฐ์—ด์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ๊ธฐ์ค€์œผ๋กœ ๋’ค๋ฅผ ๋ดค์„ ๋•Œ, ์ž์‹ ๋ณด๋‹ค ์ˆœ์„œ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด, count+1์„ ํ•ด์คŒ
for(int i=0; i<n-1; i++) {
	for(int j=i+1; j<n; j++) {
		if(out[i] > out[j]) {
			count++;
			break;
		}
	}
}

3. ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.LinkedHashMap;
public class Imple_11 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		HashMap<String, Integer> map = new LinkedHashMap<>();
		
		int count = 0;
		int n = Integer.parseInt(br.readLine());
		int[] out = new int[n];
		
		for(int i=1; i<=n; i++) {
			map.put(br.readLine().trim(), i);
		}
		
		for(int i=0; i<n; i++) {
			out[i] = map.get(br.readLine().trim());
		}
		
		for(int i=0; i<n-1; i++) {
			for(int j=i+1; j<n; j++) {
				if(out[i] > out[j]) {
					count++;
					break;
				}
			}
		}
		
		System.out.println(count);
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€