๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


1. ๋ฌธ์ œ

์ˆ˜ํฌ์ž 3๋ช…์ด ์ˆ˜ํ•™๋ฌธ์ œ๋ฅผ ์ฐ๋Š”๋‹ค.

๋ฌธ์ œ ์ˆ˜๋Š” ์ตœ๋Œ€ 10000๊ฐœ์ด๊ณ  ๊ฐ์ž ์ฐ๋Š” ํŒจํ„ด์ด ์žˆ๋‹ค.

1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

์ •๋‹ต ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์ˆ˜ํฌ์ž์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งž์ถ˜ ์ˆ˜ํฌ์ž๊ฐ€ ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

2. ํ’€์ด

์™„์ „ํƒ์ƒ‰ ๋ฌธ์ œ์ด๋‹ค.

์–ด๋ ต์ง€ ์•Š์€ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์‹ ๋‚˜๊ฒŒ ์งœ์„œ ์ œ์ถœํ–ˆ๋Š”๋ฐ 5, 7 ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ๊ณ„์† ๋ง‰ํ˜”๋‹ค.

2์‹œ๊ฐ„์„ ๊ณ ๋ฏผํ•˜๋‹ค ์›์ธ์„ ์ฐพ์ง€ ๋ชปํ•˜์—ฌ ๊ฒฐ๊ตญ ๋ธ”๋กœ๊ทธ๋ฅผ ์Šฌ์ฉ ์ฐธ๊ณ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค..

์›์ธ์€ Math.max์— ์žˆ์—ˆ๋‹ค.

 

๋‚˜๋Š” ์ฒ˜์Œ์— ์•„๋ž˜์™€ ๊ฐ™์ด max ๊ฐ’์„ ๊ตฌํ•ด์ฃผ์—ˆ๋‹ค.

max = Math.max(p1_cnt, p2_cnt);
max = Math.max(p2_cnt, p3_cnt);
max = Math.max(p3_cnt, p1_cnt);

 

ํ•˜์ง€๋งŒ ์ •๋‹ต ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์•˜๋‹ค.

max = Math.max(p1_cnt, Math.max(p2_cnt, p3_cnt));

 

์™œ์ธ์ง€ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์•˜๋‹ค. ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ด๊ฑธ ๋ฌธ์ œ๋กœ ์—ฌ๊ธฐ์ง€ ์•Š์•˜๋‹ค๋Š”๊ฒŒ ๋†€๋ž๋‹ค

max๋Š” ํ•œ ์ค„๋กœ ๋น„๊ตํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ p1_cnt, p2_cnt, p3_cnt 3๊ฐœ ๊ฐ’์„ ๋‹ค๊ฐ™์ด ๋น„๊ตํ•œ๋‹ค.

๋ฐ˜๋ฉด์— ์ˆ˜์ • ์ „ ์ฝ”๋“œ๋Š” p1_cnt, p2_cnt ๋น„๊ต ํ›„ ๋์ด๋‹ค. ์ค„๋งˆ๋‹ค max๊ฐ€ ๊ฐฑ์‹ ๋  ๋ฟ 3๊ฐœ๊ฐ’์˜ max๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.

max = Math.max(p1_cnt, p2_cnt);
max = Math.max(max, p3_cnt);

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋์„ ๊ฒƒ์ด๋‹ค. p1_cnt, p2_cnt ๋น„๊ตํ•œ ๊ฐ’ max๋ฅผ ๊ฐ€์ง€๊ณ  p3_cnt์™€ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

3. ์ฝ”๋“œ

import java.io.*;
import java.util.*;

class Solution {
    
    static int p1_cnt, p2_cnt, p3_cnt, max;
    static List<Integer> ansList = new ArrayList<> ();
    
    static int[] ans;
    static int[] p1 = {1, 2, 3, 4, 5};
    static int[] p2 = {2, 1, 2, 3, 2, 4, 2, 5};
    static int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    
    public int[] solution(int[] answers) {
        for (int i=0; i<answers.length; i++) {
            //1๋ฒˆ
            if (answers[i] == p1[i%5]) p1_cnt++;
            //2๋ฒˆ
            if (answers[i] == p2[i%8]) p2_cnt++;
            //3๋ฒˆ
            if (answers[i] == p3[i%10]) p3_cnt++;
            //๋น„๊ต
            max = Math.max(p1_cnt, Math.max(p2_cnt, p3_cnt));
            
            // ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค๊ฐ€ ํ‹€๋ฆผ
            // max = Math.max(p1_cnt, p2_cnt);
            // max = Math.max(p2_cnt, p3_cnt);
            // max = Math.max(p3_cnt, p1_cnt);
        }
        
        // max๊ฐ€ 0์ผ ๊ฒฝ์šฐ
        if (max == 0) return new int[] {1, 2, 3};
        
        if (max == p1_cnt) {
            ansList.add(1);
        } 
        if (max == p2_cnt) {
            ansList.add(2);
        }
        if (max == p3_cnt) {
            ansList.add(3);
        }
        
        ans = new int[ansList.size()];
        for (int i=0; i<ansList.size(); i++) {
            ans[i] = ansList.get(i);
        }
        
        return ans;
    }
}

4. ์‚ฌ๋‹ด

๋†“์นœ ๋ถ€๋ถ„์„ ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์— ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์—ˆ์„ ํ…๋ฐ

์ฒ˜์Œ์— ์งค ๋•Œ๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ ์•Œ์•„์ฐจ๋ฆฌ์ง€ ๋ชปํ•œ ์ ์ด ์•„์‰ฌ์› ๋‹ค.

์•„์ž์ขŒ ๋˜ ๋‹ค๋ฅธ๊ฑฐ ํ’€๋Ÿฌ ๊ฐ€๋ณด์ž์ž์ž