๐Ÿ Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ(์ž๋ฐ”)

Dhey 2023. 3. 20. 18:00
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ตœ๋นˆ๊ฐ’์€ ์ฃผ์–ด์ง„ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋นˆ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ œํ•œ์‚ฌํ•ญ

 

   -   0 < array์˜ ๊ธธ์ด < 100

   -   0 ≤ array์˜ ์›์†Œ < 1000

 

 


์ž…์ถœ๋ ฅ ์˜ˆ

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

 


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  ์ž…์ถœ๋ ฅ ์˜ˆ #1

  • [1, 2, 3, 3, 3, 4]์—์„œ 1์€ 1๊ฐœ 2๋Š” 1๊ฐœ 3์€ 3๊ฐœ 4๋Š” 1๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์€ 3์ž…๋‹ˆ๋‹ค.

  ์ž…์ถœ๋ ฅ ์˜ˆ #2

  • [1, 1, 2, 2]์—์„œ 1์€ 2๊ฐœ 2๋Š” 2๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์ด 1, 2์ž…๋‹ˆ๋‹ค. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

  ์ž…์ถœ๋ ฅ ์˜ˆ #3

  • [1]์—๋Š” 1๋งŒ ์žˆ์œผ๋ฏ€๋กœ ์ตœ๋นˆ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

 

 


 

ํ’€์ด

๐Ÿ’ก ์ ‘๊ทผ ๋ฐฉ๋ฒ•

  1. ๋ฐฐ์—ด์—์„œ์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•œ๋‹ค. (max)

  2. ์ตœ๋Œ€๊ฐ’๋งŒํผ์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ํ• ๋‹นํ•œ๋‹ค. (cnt[ ])

      (* ์ตœ๋Œ€๊ฐ’์˜ index์— ์ตœ๋Œ€๊ฐ’์ด ๋“ค์–ด์˜ค๋„๋ก +1์„ ํ•ด์ค€๋‹ค)

  3. for๋ฌธ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. (๋ฐœ์ƒ ํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•จ)

  4. ๋ฐฐ์—ด(cnt[ ])์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์˜ index๋ฅผ ๊ตฌํ•œ๋‹ค.

  5. ๊ตฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด -1์„ return ํ•œ๋‹ค.

 

 

์ฒ˜์Œ ์—๋Ÿฌ ์ฝ”๋“œ
import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int max = 0;
        
        //๋ฐฐ์—ด์—์„œ์˜ ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ
        for(int i=0; i<array.length; i++){
            if(max < array[i]){
                max = array[i];
            }
        }
        
        int cnt[] = new int[max+1];
        for(int i=0; i<array.length; i++){
            cnt[array[i]]++;
        }
        Arrays.sort(cnt);
        
        // !๋ฌธ์ œ๋ฐœ์ƒ์ง€์ 
        if(cnt[cnt.length-1] == cnt[cnt.length-2]){
            answer = -1;
        } else{
            answer = cnt[cnt.length-1];
        }
        
        return answer;
    }
}

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ฝ”๋“œ์ด๋‹ค.

 

cnt[ ]์„ ๊ฐ€์žฅ ๋งŽ์ด count๋œ ์ˆœ์„œ๋Œ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•˜์—ฌ, ๋งˆ์ง€๋ง‰ ๊ฐ’๊ณผ ์ง์ „ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ ์ด๋ฏ€๋กœ -1์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค.

 

!๋ฌธ์ œ:  ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 3๊ฐœ๋Š” ํ†ต๊ณผํ–ˆ์œผ๋‚˜, ์ œ์ถœ ์‹œ 16๊ฐœ ์ค‘ 6๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋งŒ ํ†ต๊ณผํ•˜์˜€๋‹ค.

!์›์ธ:  ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ ์ผ ๋•Œ -1์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•œ ์ฝ”๋“œ์—์„œ

          ๋ฐฐ์—ด์— ๊ฐ’์ด 1๊ฐœ๋งŒ ๋“ค์–ด์žˆ์„ ๊ฒฝ์šฐ .length-2๋ฅผ ํ–ˆ์„ ๋•Œ ํ•ด๋‹นํ•˜๋Š” index๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฒŒ ๋˜์–ด

          ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

 

 

 

์ตœ์ข… ์ฝ”๋“œ
class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int max = 0;
        int max_cnt = 0;
        
        //๋ฐฐ์—ด์—์„œ์˜ ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ
        for(int i=0; i<array.length; i++){
            if(max < array[i]){
                max = array[i];
            }
        }
        
        int cnt[] = new int[max+1];
        for(int i=0; i<array.length; i++){
            cnt[array[i]]++;
        }
        
        for(int i=0; i<cnt.length; i++){
            if(max_cnt < cnt[i]) {
                max_cnt = cnt[i];
                answer = i;
            } else if(max_cnt == cnt[i]) {
                answer = -1;
            }
        }
        return answer;
    }
}

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ๋Œ€์‹  cnt[ ]์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ๊ฐ’์„ ์ฐพ๋Š” ๋„์ค‘ ๋™์ผํ•œ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด -1์„ return ํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•