[Algorithm] ๐Ÿซ๋ฐฑ์ค€ 13414 ์ˆ˜๊ฐ•์‹ ์ฒญ

HaJingJingยท2021๋…„ 6์›” 11์ผ
0

Algorithm

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

0. ๋ฌธ์ œ

๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ๋Š” ๋งค ํ•™๊ธฐ ์‹œ์ž‘ ์ „ ์ข…ํ•ฉ์ •๋ณด์‹œ์Šคํ…œ์—์„œ ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ํ•œ๋‹ค. ๋งค ์ˆ˜๊ฐ•์‹ ์ฒญ๋งˆ๋‹ค ์•„์ฃผ ๋งŽ์€ ํ•™์ƒ๋“ค์ด ๋ชฐ๋ ค ์„œ๋ฒ„์— ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, ๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ๋Š” ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ถ€ํ•˜ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค. ์ƒˆ๋กœ์šด ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™” ๋œ ํ›„, ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋นจ๋ฆฌ ๋ˆ„๋ฅธ ํ•™์ƒ์ด ๋Œ€๊ธฐ๋ชฉ๋ก์— ๋จผ์ € ๋“ค์–ด๊ฐ„๋‹ค.
์ด๋ฏธ ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๋งจ ๋’ค๋กœ ๋ฐ€๋ ค๋‚œ๋‹ค.
์ž ์‹œ ํ›„ ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋˜๋ฉด, ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ํ•™์ƒ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ˆ˜๊ฐ•์‹ ์ฒญ์ด ์™„๋ฃŒ๋˜๋ฉฐ, ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์›์ด ๊ฝ‰ ์ฐฐ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ๋Œ€๊ธฐ๋ชฉ๋ก์€ ๋ฌด์‹œํ•˜๊ณ  ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ์ข…๋ฃŒํ•œ๋‹ค.

์œ„์˜ ํ‘œ๋Š” ์ตœ๋Œ€ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์›์ด 3๋ช…์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…์— ๋Œ€ํ•ด 6๋ช…์˜ ํ•™์ƒ์ด ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ์ง„ํ–‰ํ•œ ๋ชจ์Šต์ด๋‹ค. ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋œ ํ›„, ๋จผ์ € ๊ทœ์น™ 1์„ ์ ์šฉํ•˜์—ฌ ํด๋ฆญ์„ 2๋ฒˆ ์ด์ƒ ํ•œ ํ•™์ƒ์˜ ์ค‘๋ณต๋œ ๋Œ€๊ธฐ๋ชฉ๋ก์„ ์‚ญ์ œํ•œ๋‹ค. ์ค‘๋ณต๋œ ๋ชฉ๋ก์„ ์ œ๊ฑฐํ•œ ํ›„, ๋งจ ์•ž์—์„œ๋ถ€ํ„ฐ ์ตœ๋Œ€ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์›์ธ 3๋ช…์„ ์„ ์ •ํ•œ๋‹ค. ํ‘œ์˜ ๋งจ ์˜ค๋ฅธ์ชฝ์—๋Š” ๊ทธ ์ตœ์ข…๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๋ชจ์Šต์ด๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ์ˆ˜๊ฐ•์‹ ์ฒญ์— ์„ฑ๊ณตํ•œ ์ธ์›์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ 1๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ณผ๋ชฉ์˜ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์› K(1 โ‰ค K โ‰ค 100,000)์™€ ํ•™์ƒ๋“ค์ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ์ˆœ์„œ๋ฅผ ๊ธฐ๋กํ•œ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ธธ์ด L(1 โ‰ค L โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ L๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ•™์ƒ์˜ ํ•™๋ฒˆ์ด ํด๋ฆญ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ํ•™๋ฒˆ์€ 8์ž๋ฆฌ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ
์ถœ๋ ฅ์€ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด, ์ˆ˜๊ฐ•์‹ ์ฒญ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ทœ์น™์„ ์ ์šฉํ•œ ํ›„ ์ˆ˜๊ฐ•์‹ ์ฒญ์— ์„ฑ๊ณตํ•œ ์ธ์›์˜ ํ•™๋ฒˆ์„ ํ•œ ์ค„์— 1๊ฐœ์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

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

๐Ÿ’ก LinkedHashSet ์ด์šฉ
๐Ÿ’ก ํ•™๋ฒˆ์ด ๊ธฐ์กด์— ์žˆ์œผ๋ฉด ๋บ€ ๋‹ค์Œ์— ๋งจ ๋’ค์—๋‹ค๊ฐ€ ๋‹ค์‹œ ๋„ฃ์Œ

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

1) LinkedHashSet ์ด์šฉ

LinkedHashSet<String> set = new LinkedHashSet<>();

2) ํ•™๋ฒˆ์ด ๊ธฐ์กด์— ์žˆ์œผ๋ฉด ๋บ€ ๋‹ค์Œ์— ๋งจ ๋’ค์—๋‹ค๊ฐ€ ๋‹ค์‹œ ๋„ฃ์Œ

if(set.contains(num)) 
		set.remove(num);
set.add(num);

3. ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedHashSet;

public class Hash_9 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String[] s = br.readLine().split(" ");
		int k = Integer.parseInt(s[0]);
		int l = Integer.parseInt(s[1]);
		
		LinkedHashSet<String> set = new LinkedHashSet<>();
		for(int i=0; i<l; i++) {
			String num = br.readLine();
			if(set.contains(num)) set.remove(num);
			set.add(num);
		}
		
		for(String ret : set) {
			if(k <= 0)
				break;
			bw.write(ret);
			bw.write("\n");
			k--;
		}
		
		bw.flush();
		bw.close();
	}
}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

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

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