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

[๋ฐฑ์ค€] 1302๋ฒˆ: ๋ฒ ์ŠคํŠธ์…€๋Ÿฌ(์ •๋ ฌ, ํƒ์ƒ‰)

by ์ฃผ๋ฐœ2 2020. 4. 24.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1302

 

1302๋ฒˆ: ๋ฒ ์ŠคํŠธ์…€๋Ÿฌ

์ฒซ์งธ ์ค„์— ์˜ค๋Š˜ ํ•˜๋ฃจ ๋™์•ˆ ํŒ”๋ฆฐ ์ฑ…์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ๊ฐ’์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ฑ…์˜ ์ œ๋ชฉ์ด ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ๋‹ค. ์ฑ…์˜ ์ œ๋ชฉ์˜ ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int N = scan.nextInt();
		String[] sArr = new String[N];
		for(int i=0; i<N; i++) 
			sArr[i] = scan.next();
		
		Arrays.sort(sArr);
		
		int count = 0;
		int max = 0;
		String temp = sArr[0];
		String result = "";
		for(int i=0; i<sArr.length; i++) {
			
			// ๋‘ ์ฑ…์˜ ์ œ๋ชฉ์ด ๊ฐ™์€๊ฒฝ์šฐ
			if(sArr[i].equals(temp)) {
				count ++;
			}
			
			// ๋‘ ์ฑ…์˜ ์ œ๋ชฉ์ด ๋‹ค๋ฅธ๊ฒฝ์šฐ
			else {
				if(count > max) {	// ๋นˆ๋„๊ฐ€ ๋†’์€์ฑ…์ด ๊ธฐ์ค€์ด ๋จ.
					max = count;
					result = temp;
				}
				
				// ์ฑ… ์ œ๋ชฉ๊ณผ ๊ฐœ์ˆ˜ ์ดˆ๊ธฐํ™”
				temp = sArr[i];
				count = 1;
			}
		}
		
		if(count > max)
			result = temp;
		
		System.out.println(result);
		scan.close();
	}

}

ํ’€์ด

๋ฐฉ๋ฒ•์€ ์ •๋ง ๊ฐ„๋‹จํ•œ๋ฐ ๋ญ”๊ฐ€ ๋จธ๋ฆฌ๊ฐ€ ์•ˆ๋Œ์•„๊ฐ„๋‹ค.

์ฑ… ์ œ๋ชฉ์„ String ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ์ •๋ ฌํ•œ ํ›„ ์ฑ…์˜ ์ œ๋ชฉ ๋นˆ๋„์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ฑ…์ œ๋ชฉ์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

ํ˜„์žฌ ์ €์žฅ๋œ ์ฑ…์ œ๋ชฉ(temp) ๋ฅผ ๊ธฐ์ค€์œผ๋กœ i๋ฒˆ์งธ ์ฑ…์˜ ์ œ๋ชฉ์ด ๊ฐ™์œผ๋ฉด count๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ ,

๋‘ ์ฑ…์˜ ์ œ๋ชฉ์ด ๋‹ค๋ฅด๋ฉด ์ฑ… ์ œ๋ชฉ์˜ ๊ฐฏ์ˆ˜์™€ max๊ฐ’์„ ๋น„๊ตํ•ด ๋นˆ๋„์ˆ˜๋ฅผ ๋ฐ”๊ฟ€์ง€ ์•„๋‹์ง€ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์ฑ…์ด ์™”์œผ๋ฏ€๋กœ, ํ˜„์žฌ ์ฑ…์ œ๋ชฉ์„ temp์— ์ €์žฅํ•˜๊ณ , count๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“  for๋ฌธ ํƒ์ƒ‰์„ ๋๋‚ด๊ณ , ์นด์šดํŠธ๋œ ์ฑ… ์ œ๋ชฉ์˜ ๊ฐฏ์ˆ˜๊ฐ€ max๋ณด๋‹ค ํฐ์ง€ ๋น„๊ต๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

์ฑ… ์ œ๋ชฉ์ด a a a b b b b ์ธ ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ฑ… ์ œ๋ชฉ์ด ๋™์ผํ•˜๊ฒŒ ๋๋‚ฌ์œผ๋ฏ€๋กœ for๋ฌธ์„ ๋น ์ ธ๋‚˜์™”์„๋•Œ result = "a" ์ด๋‹ค.

ํ•˜์ง€๋งŒ a์˜ max๊ฐ’์€ 3 ,  for๋ฌธ์„ ๋น ์ ธ๋‚˜์™”์„๋•Œ์˜ count ๋Š” 4์ด๋ฏ€๋กœ ๊ฐ’์„ ๋ฐ”๊พธ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€