Develop record

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ชจ์˜๊ณ ์‚ฌ-Java ๋ณธ๋ฌธ

programmers/Lv.1

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ชจ์˜๊ณ ์‚ฌ-Java

seong's log 2024. 7. 3. 04:41

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

๐Ÿ“š ๋ฌธ์ œ์„ค๋ช…

 

์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค.

 

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, ...

 

1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.


 

โœ… ์ œํ•œ์กฐ๊ฑด

  • ์‹œํ—˜์€ ์ตœ๋Œ€ 10,000 ๋ฌธ์ œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์˜ ์ •๋‹ต์€ 1, 2, 3, 4, 5์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ, returnํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

๐Ÿ“– ์ž…์ถœ๋ ฅ ์˜ˆ 

answers return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]

 

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

 

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

  • ์ˆ˜ํฌ์ž 1์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋งžํ˜”์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜ํฌ์ž 2๋Š” ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜ํฌ์ž 3์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ๋งžํžŒ ์‚ฌ๋žŒ์€ ์ˆ˜ํฌ์ž 1์ž…๋‹ˆ๋‹ค.

 

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

  • ๋ชจ๋“  ์‚ฌ๋žŒ์ด 2๋ฌธ์ œ์”ฉ์„ ๋งž์ท„์Šต๋‹ˆ๋‹ค.

๐Ÿ—๏ธ ์ž‘์„ฑ ์ฝ”๋“œ

import java.util.*;

class Solution {
    public Integer[] solution(int[] answers) {
        ArrayList<Integer> list = new ArrayList<>();
        int [] one = new int[]{1,2,3,4,5};	// 5๊ฐœ์”ฉ ๋ฐ˜๋ณต
        int [] two = new int[]{2,1,2,3,2,4,2,5}; // 8๊ฐœ์”ฉ ๋ฐ˜๋ณต
        int [] three = new int[]{3,3,1,1,2,2,4,4,5,5}; // 10๊ฐœ์”ฉ ๋ฐ˜๋ณต
        int [] arr = new int[3]; // ๊ฐ ์ˆ˜ํฌ์ž๋“ค์˜ ์ ์ˆ˜

        for (int i = 0; i < answers.length; i++) {
        // ์ˆ˜ํฌ์ž๋“ค ๊ธธ์ด์™€ answer์˜ ๊ธธ์ด ๋งž์ถฐ์ฃผ๊ธฐ
            one = Arrays.copyOf(one,answers.length);
            two = Arrays.copyOf(two,answers.length);
            three = Arrays.copyOf(three,answers.length);

	// ์ˆ˜ํฌ์ž๋“ค ๊ฐ’์ด 0 ์ผ๊ฒฝ์šฐ ๊ฐ’์ด ๋ฐ˜๋ณต ๋˜๋„๋ก ๋„ฃ์–ด์ฃผ๊ธฐ
            if(one[i] == 0){
                one[i] = one[i%5];
            }if(two[i] == 0){
                two[i] = two[i%8];
            }if(three[i] == 0){
                three[i] = three[i%10];
            }

	// ์ˆ˜ํฌ์ž๋“ค์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ
            if(answers[i] == one[i]){
                arr[0]++;
            }if (answers[i] == two[i]) {
                arr[1]++;
            }if (answers[i] == three[i]){
                arr[2]++;
            }

        }

        for (int i = 0; i < arr.length; i++) {
        
        // ์ตœ๋Œ€ ์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ
            int max = Arrays.stream(arr).max().getAsInt();
            
           // ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ธ์› ์ˆ˜ ๋งŒํผ
            if (max == arr[i]){
            	// ๋ฆฌ์ŠคํŠธ์— add
                list.add(i+1);
                list.sort((a,b) -> a-b);
            }
        }
        
        return list.toArray(new Integer[0]);	
    }
}

 

  • ์ˆ˜ํฌ์ž๋“ค์˜ ๊ฐ๊ฐ ๊ธธ์ด๋งŒํผ ๋ฐฐ์—ด์ด ๋ฐ˜๋ณต๋จ
  • ์ˆ˜ํฌ์ž๋“ค์˜ ๊ธธ์ด๊ฐ€ answers ์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์„ ๋•Œ ์ˆ˜ํฌ์ž[i] == answers[i] ๋น„๊ตํ•  ๊ฒฝ์šฐ index bounds ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— copy of ์‚ฌ์šฉํ•˜์—ฌ answers์˜ ๊ธธ์ด์™€ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด ์คŒ
  • ์ถ”๊ฐ€ ๋œ index์˜ ์ดˆ๊ธฐ๊ฐ’์ด 0์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํฌ์ž๋“ค[i] ์— ์ˆ˜ํฌ์ž๋“ค[i%์›๋ž˜ ์ˆ˜ํฌ์ž๋“ค ๊ธธ์ด] ๋กœ ํ•ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ์ฒ˜์Œ๊ฐ’ ๋ถ€ํ„ฐ ๋Œ€์ž…๋จ
  • ๊ทธ ํ›„ ์ˆ˜ํฌ์ž๋“ค์˜ ๋ชจ๋“  ๊ฐ’์„ answers ์˜ ๊ฐ’๊ณผ ๋น„๊ตํ•˜๊ณ  ๊ฐ ์ˆ˜ํฌ์ž๋“ค ์ ์ˆ˜ ๊ณ„์‚ฐํ•˜๊ธฐ
  • ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ์ตœ๋Œ€ ์ ์ˆ˜๊ฐ€ ๊ฐ ์ˆ˜ํฌ์ž๋“ค์˜ ์ ์ˆ˜์™€ ๊ฐ™๋‹ค๋ฉด ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค€ ํ›„ ์ •๋ ฌํ•˜๊ธฐ
  • ๋ฐ˜ํ™˜๊ฐ’์ด int[] ๋ฅผ Integer[]๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ ธ๋‹ค..

์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆ˜ํฌ์ž๋“ค์˜ ๊ธธ์ด๋ฅผ answers์˜ ๊ธธ์ด๋„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง€ ์•Š๊ณ  answers[i] ๊ฐ’๊ณผ ์ˆ˜ํฌ์ž๋“ค[i%๊ฐ ์ˆ˜ํฌ์ž๋“ค ๊ธธ์ด]๊ฐ’์ด ๊ฐ™์€์ง€๋งŒ

๋น„๊ตํ•˜๋ฉด ๋์—ˆ๋Š”๋ฐ ํ˜ผ์ž ์ด์ƒํ•˜๊ฒŒ ํŒ ๋‹ค... 

์–ด์งœํ”ผ ๋ฐ‘์—์„œ ์›๋ž˜ ๊ธธ์ด๋กœ ๋‚˜๋ˆ ์„œ ๋Œ€์ž…ํ• ๊ฑฐ๋ฉด ์ฒจ ๋ถ€ํ„ฐ copyํ•˜์ง€ ์•Š๊ณ  ๊ฐ’ ๋น„๊ตํ•˜๋ฉด ๋˜๋Š”๊ฑธ ์™œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐ์ด ์•ˆ๋‚ ๊นŒ ใ… ใ… ใ… 

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด ๋ณด๊ณ  ์•„..... ๊นจ๋‹ฌ์Œ์„ ์–ป์›€

์ˆ˜ํ•™์— ์•ฝํ•œ๊ฑด์ง€.. ์‚ฌ๊ณ  ํšŒ๋กœ๊ฐ€ ์•„์ง ๋ถ€์กฑํ•œ๋“ฏ...ใ… ใ