ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [์™„์ „ํƒ์ƒ‰] ๋ชจ์˜๊ณ ์‚ฌ
    ๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜ 2022. 10. 3. 04:56
    728x90

     ๋ฌธ์ œ ์„ค๋ช… 

    ์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 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ํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.
    ์ž…์ถœ๋ ฅ ์˜ˆ
    [1,2,3,4,5] [1]
    [1,3,2,4,2] [1,2,3]
    ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

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

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

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

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

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

     

     

     


     ์ฒ˜์Œ ํ‘ผ ์ฝ”๋“œ 

    ์•„์ด๋””์–ด ์ƒ๊ฐํ•˜๋Š”๊ฑด ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค.

    1, 2, 3๋ฒˆ ์ˆ˜ํฌ์ž๋“ค์ด ์ฐ๋Š” ๋ฐฉ์‹์„ ๋‹ด์€ ๋ฐฐ์—ด๊ณผ ์ž…๋ ฅ๋ฐ›์€ answers ๋ฐฐ์—ด์„

    answers ๊ธธ์ด๋งŒํผ ๋น„๊ตํ•ด์ฃผ๋ฉด์„œ ์ฑ„์ ํ•œ ํ›„

    ๋งž์€ ๊ฐœ์ˆ˜๋กœ ์ •๋ ฌํ•ด ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ(ํ˜น์€ ๋ฐฐ์—ด)์„ ๋ฆฌํ„ดํ•˜์ž! 

     

    ์•ผ์‹ฌ์ฐจ๊ฒŒ ํ’€์—ˆ๋Š”๋ฐ 

    ํ…Œ์ŠคํŠธ 2 ใ€‰ ์‹คํŒจ (2.13ms, 71.8MB)
    ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (2.00ms, 77.8MB)
    ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (1.77ms, 73.8MB)

    ๋‚˜๋จธ์ง€ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋Ÿฐํƒ€์ž„์—๋Ÿฌ

    ์™œ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ๋งŽ์ด๋‚˜์ง€? ํ–ˆ๋Š”๋ฐ ํฌ๋ฌธ์•ˆ์— ~~~~~์˜คํƒ€๊ฐ€ ์žˆ์—ˆ๋‹ค. p2 -> p3๋กœ ๊ณ ์ณ์ค€๋‹ค.

    ์ฝ”๋“œ๋„ ๋ฐ˜๋ณต์ด ๋งŽ๋‹ค. ๊ณ ์ณ์•ผ๊ฒ ๋‹ค.

     

    public int[] solution(int[] answers) {
            int[] answer = {};
            
            int[] grading = {};
            grading = new int[3];
            int[] p1= { 1, 2, 3, 4, 5};
            int[] p2 = { 2, 1, 2, 3, 2, 4, 2, 5};
            int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
            
            int i1 = 0;
            int i2= 0 ;
            int i3 = 0;
            
            //์™„์ „ ํƒ์ƒ‰ answer๊ธธ์ด๋งŒํผ 1๋ฒˆ,2๋ฒˆ,3๋ฒˆ์˜ ๋งž์€ ๊ฐœ์ˆ˜ ํ™•์ธ 
            for(int i =0;i<answers.length;i++) {
            	
            	if(p1[i1++] == answers[i]) {
            		grading[0] += 1;
            	}
            	if(p2[i2++] == answers[i]) {
            		grading[1] += 1;
            	}
            	if(p2[i3++] == answers[i]) { //~~~~์˜คํƒ€ ๋‚˜์žˆ์—ˆ์Œ p2->p3๋กœ ๊ณ ์นจ
            		grading[2] += 1;
            	}
    
            	if(i1 == p1.length-1) {
            		i1 = 0;
            	}
            	if(i2 == p2.length-1) {
            		i2 = 0;
            	}
            	if(i3 == p3.length-1) {
            		i3 = 0;
            	}
            }
            ArrayList<Integer> answerlist = new ArrayList<>();
            // ์œ„์˜ํฌ๋ฌธ ๋Œ๋ฆฌ๋ฉด์„œ ์ •๋ ฌ์„ ํ•˜๋Š”๊ฒŒ ๋‚˜์„๊นŒ? ์•„๋‹˜ ๋งž์ถ˜๊ฐœ์ˆ˜ ๊ตฌํ•œํ›„ ํฌ๋ฌธ๋น ์ ธ๋‚˜์˜ค๊ณ  ๊ตฌํ•˜๋Š”๊ฒŒ ๋‚˜์„๊นŒ?
            for(int i =0;i<grading.length;i++) {
            	if(grading[i] == Arrays.stream(grading).max().getAsInt()) {
            		answerlist.add(i+1);
            	}
            }
            
            int j=0;
            answer = new int[answerlist.size()];
            for(int a:answerlist) {
            	answer[j++] = a;
            }
            return answer;
        }

     

     

     

     


     ์ œ์ถœํ•œ ์ฝ”๋“œ 

    import java.util.ArrayList;
    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] answers) {
            int[] answer = {};
            
            int[] grading = {};
            grading = new int[3];
            int[] p1= { 1, 2, 3, 4, 5};
            int[] p2 = { 2, 1, 2, 3, 2, 4, 2, 5};
            int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
            
            int i1 = 0;
            int i2 = 0;
            int i3 = 0;
            int p1_len = p1.length;
            int p2_len = p2.length;
            int p3_len = p3.length;
            
            //์™„์ „ ํƒ์ƒ‰ answer๊ธธ์ด๋งŒํผ 1๋ฒˆ,2๋ฒˆ,3๋ฒˆ์˜ ๋งž์€ ๊ฐœ์ˆ˜ ํ™•์ธ 
            for(int i =0;i<answers.length;i++) {
            	
            	if(p1[i1%p1_len] == answers[i])	grading[0]+= 1;
            	if(p2[i2%p2_len] == answers[i]) grading[1]+= 1;
            	if(p3[i3%p3_len] == answers[i]) grading[2]+= 1;
    
            	i1++; i2++; i3++;
            }
    
            
            ArrayList<Integer> answerlist = new ArrayList<>();
     
    //         ๋งŽ์ด ๋งž์ถ˜ ์‚ฌ๋žŒ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ max ๊ฐ’ stream์œผ๋กœ ์ฐพ๊ธฐ
    //        int max = Arrays.stream(grading).max().getAsInt();
    //        for(int i =0;i<grading.length;i++) {
    //        	if(max==grading[i]) {
    //        		answerlist.add(i+1);
    //        	}
    //        }
    
    //         ๋งŽ์ด ๋งž์ถ˜ ์‚ฌ๋žŒ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ max ๊ฐ’ for๋ฌธ์œผ๋กœ ๊ตฌํ•˜๊ธฐ 
            int max = 0;
            for(int i = 0 ; i < grading.length;i++) {
            	if(max<grading[i]) max=grading[i];
            }
            
            for(int i =0;i<grading.length;i++) {
            	if(max==grading[i]) {
            		answerlist.add(i+1);
            	}
            }
            
            //arraylist answer ๋ฐฐ์—ด์— ์˜ฎ๊ฒจ์ฃผ๊ธฐ 
            int j=0;
            answer = new int[answerlist.size()];
            for(int a:answerlist) {
            	answer[j++] = a;
            }
    
            return answer;
        }
    }

     

    ์ฉ ์ข‹์€ ์ฝ”๋“œ๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค.  arraylist๋ฅผ ์“ฐ์ง€์•Š๊ณ  ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ด์•ผ๊ฒ ๋‹ค.

     

    Stream API๋กœ ๋ฐฐ์—ด์˜ max๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค for๋ฌธ์„ ๋Œ๋ ค ์ง์ ‘ max๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ™•์‹คํžˆ ๋” ๋น ๋ฅด๋‹ค.

    ํ…Œ์ŠคํŠธ์ผ€์ด์Šค \ max๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• for๋ฌธ์œผ๋กœ max๊ฐ’ ๊ตฌํ•˜๊ธฐ  Arrays.stream(grading).max().getAsInt()
    ํ…Œ์ŠคํŠธ 1 ใ€‰ ํ†ต๊ณผ (0.03ms, 78.1MB) ํ†ต๊ณผ (0.84ms, 80MB)
    ํ…Œ์ŠคํŠธ 2 ใ€‰ ํ†ต๊ณผ (0.03ms, 76.4MB) ํ†ต๊ณผ (0.78ms, 70.6MB)
    ํ…Œ์ŠคํŠธ 3 ใ€‰ ํ†ต๊ณผ (0.03ms, 73.7MB) ํ†ต๊ณผ (0.97ms, 76.4MB)
    ํ…Œ์ŠคํŠธ 4 ใ€‰ ํ†ต๊ณผ (0.03ms, 74MB) ํ†ต๊ณผ (0.84ms, 84.1MB)
    ํ…Œ์ŠคํŠธ 5 ใ€‰ ํ†ต๊ณผ (0.05ms, 72MB) ํ†ต๊ณผ (0.74ms, 74.6MB)
    ํ…Œ์ŠคํŠธ 6 ใ€‰ ํ†ต๊ณผ (0.04ms, 75.4MB) ํ†ต๊ณผ (0.77ms, 72MB)
    ํ…Œ์ŠคํŠธ 7 ใ€‰ ํ†ต๊ณผ (0.35ms, 77.5MB) ํ†ต๊ณผ (1.09ms, 79.6MB)
    ํ…Œ์ŠคํŠธ 8 ใ€‰ ํ†ต๊ณผ (0.14ms, 77.2MB) ํ†ต๊ณผ (0.90ms, 75.9MB)
    ํ…Œ์ŠคํŠธ 9 ใ€‰ ํ†ต๊ณผ (0.62ms, 76.9MB) ํ†ต๊ณผ (1.85ms, 81.3MB)
    ํ…Œ์ŠคํŠธ 10 ใ€‰ ํ†ต๊ณผ (0.34ms, 73MB) ํ†ต๊ณผ (1.10ms, 75.1MB)
    ํ…Œ์ŠคํŠธ 11 ใ€‰ ํ†ต๊ณผ (0.70ms, 78.9MB) ํ†ต๊ณผ (1.31ms, 76.5MB)
    ํ…Œ์ŠคํŠธ 12 ใ€‰ ํ†ต๊ณผ (0.62ms, 74.1MB) ํ†ต๊ณผ (1.33ms, 75MB)
    ํ…Œ์ŠคํŠธ 13 ใ€‰ ํ†ต๊ณผ (0.07ms, 81.6MB) ํ†ต๊ณผ (0.72ms, 77.9MB)
    ํ…Œ์ŠคํŠธ 14 ใ€‰ ํ†ต๊ณผ (0.69ms, 70.1MB) ํ†ต๊ณผ (2.14ms, 81.3MB)

    ๋Œ“๊ธ€

Designed by Tistory.