๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

๋ชจ์˜๊ณ ์‚ฌ - Java [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต]

by ๊ทคํ”ผํ‚ค 2022. 12. 19.

 

โค๏ธ Problem

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

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no answers result
1 [1,2,3,4,5] [1]
2 [1,3,2,4,2] [1,2,3]

 


 

๐Ÿ’› Solution

ํ’€์ด

import java.util.ArrayList;
class Solution {
    public int[] solution(int[] answers) {
		int[] student1 = {1, 2, 3, 4, 5};
		int[] student2 = {2, 1, 2, 3, 2, 4, 2, 5};
		int[] student3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
		int[] scores = new int[3];
		
		for (int i=0; i<answers.length; i++) {
			if(student1[i%student1.length] == answers[i]) {
				scores[0]++;
			}
			if(student2[i%student2.length] == answers[i]) {
				scores[1]++;
			}
			if(student3[i%student3.length] == answers[i]) {
				scores[2]++;
			}
		}
		
		int highest = 0;
		for(int i=0; i<scores.length; i++) {
			highest = Math.max(scores[i], highest);
		}
		
		ArrayList<Integer> arr = new ArrayList<Integer>();
		for(int i=0; i<scores.length; i++) {
			if(scores[i]==highest) {
				arr.add(i+1);
			}
		}
		
		int[] scorers = new int[arr.size()];
		for(int i=0; i<scorers.length; i++) {
			scorers[i] = arr.get(i);
		}
        return scorers;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ VERY GOOD๐Ÿ˜‹


 


 

๐Ÿ’œ Comment

์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ 1๋ฒˆ ์ˆ˜ํฌ์ž, 2๋ฒˆ ์ˆ˜ํฌ์ž, 3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ๊ฐ๊ฐ ์ฐ๋Š” ๋ฐฉ์‹์˜ ๊ฐ€์ง“์ˆ˜๊ฐ€ ๋‹ค ๋‹ค๋ฅด๋‹ค๋Š” ์ ๊ณผ ์ฑ„์ ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜(answers.length)๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์ˆ˜ํฌ์ž๋“ค ๊ฐ„์˜ ๋ฌธ์ œ ์ฐ๋Š” ํŒจํ„ด์„ ์ถ”์ถœํ•ด์„œ ์ด ๋ฌธ์ œ ๊ฐœ์ˆ˜๋งŒํผ ํ•ด๋‹น ํŒจํ„ด์„ ๊ฐ๊ฐ ๋ฐ˜๋ณต์‹œ์ผœ์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์˜์™ธ๋กœ ์ƒ๊ฐ์„ ์š”๊ตฌํ–ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ผ๋‹จ ๊ฐ ์ˆ˜ํฌ์ž์˜ ์ฐ๋Š” ๋ฐฉ์‹์„ ๋ฐฐ์—ด์— ๋‹ด์•˜๋‹ค. ๊ทธ ๋‹ค์Œ, ๊ฐ ์ˆ˜ํฌ์ž๋“ค์ด ๋งžํžŒ ๋ฌธ์ œ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์„ int[] scores๋ฅผ ๋งŒ๋“ค์–ด ๋‘์—ˆ๋‹ค. for ๋ฐ˜๋ชฉ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ์ˆ˜ํฌ์ž๋“ค์˜ ๋‹ต์•ˆ(student1[?], student2[?], students3[?])๊ณผ ํ•ด๋‹ต(answers[i])๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ๊ฐ scores[0], scores[1], scores[2]๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋„๋ก ํ•˜์˜€๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹์˜ ๊ฐ€์ง“์ˆ˜๊ฐ€ student1.length, student2.length, student3.length๋กœ ๋‹ค๋ฅด๋ฏ€๋กœ i๋ฅผ ๊ฐ์ž์˜ ๊ฐ€์ง“์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ฐ€์ง“์ˆ˜๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๊ฒฐ๊ตญ ๋ชจ๋“  ์ˆ˜ํฌ์ž๋“ค์˜ ๋‹ต์•ˆ ํŒจํ„ด์ด ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ์˜ ๋ฒˆํ˜ธ(i)๋ฅผ ์ž์‹ ์˜ ์ฐ๋Š” ๋ฐฉ์‹์˜ ๊ธธ์ด(student1.length)๋กœ  ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋ฉด  ์ถ”๊ฐ€ ์ž‘์—… ์—†์ด๋„ ๊ณ„์† ์ฐ๋Š” ํŒจํ„ด์„ ์ˆœํ™˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ  student1[i%student1.length] == answers[i] ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

๊ทธ ๋‹ค์Œ, for ๋ฐ˜๋ณต๋ฌธ์—์„œ int[] scores์— ๋“ค์–ด์žˆ๋Š” ๋งž์ถ˜ ๋‹ต ๊ฐœ์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜(int highest)๋ฅผ ์ถ”์ถœํ•˜๊ณ  ArrayList๋ฅผ ์„ ์–ธํ–ˆ๋‹ค. ๋™์ ์ž๊ฐ€ ๋ช‡๋ช…์ธ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด๊ฐ€ ์œ ๋™์ ์ธ ArrayList๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ scores[i]์™€ highest๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ArrayList์— ๊ฐ’์„ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ์ด ๋•Œ, ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์€ ์ž์‹ ์˜ ์ˆ˜ํฌ์ž ๋ฒˆํ˜ธ(i+1)์ด ๋œ๋‹ค.  i+1๋ฅผ ํ•ด์ค€ ์ด์œ ๋Š” i๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ for ๋ฐ˜๋ชฉ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ int[] scorers์— ArrayList์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜ํฌ์ž ๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋์ด๋‹ค. 

 

 

 

8708์œ„๐Ÿฅฐ

๋Œ“๊ธ€