๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/42840
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์์ฝ
์ํฌ์ 3๋ช ์ด ์ฃผ์ด์ง ํจํด์ผ๋ก ์ ๋ต์ ์ฐ๊ณ , ์ ๋ต ๋ฆฌ์คํธ answers๊ฐ ์ฃผ์ด์ก์ ๋ ๊ฐ์ฅ ์ ๋ต์ ๋ง์ด ๋งํ ์ฌ๋์ ๋ฐํํ๋ ๋ฌธ์ ์ ๋๋ค.
- 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,...
์ ํ
- ์ํ์ ์ต๋ 10,000 ๋ฌธ์ ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- ๋ฌธ์ ์ ์ ๋ต์ 1, 2, 3, 4, 5์ค ํ๋์ ๋๋ค.
- ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ฐ์ ์ฌ๋์ด ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ, return ํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด ์ฃผ์ธ์.
ํ์ด
๊ฐ์ฅ ์ฝ๊ฒ ๋ ์ค๋ฅด๋ ๋ฐฉ์์ ์ ๋ต๊ณผ 1๋ฒ, 2๋ฒ, 3๋ฒ์ด ์ ํํ ์ ๋ต์ ํ ๋ฌธ์ ์ฉ ๋น๊ตํ๋ ๋ฐฉ์์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด O(3N)=O(N)์ ์๊ฐ๋ณต์ก๋๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์์ต๋๋ค.
- answers์ i๋ฒ์งธ ๋ฌธ์ ์ ๋ต๊ณผ, 1๋ฒ 2๋ฒ 3๋ฒ์ด ์ ํํ i๋ฒ์งธ ๋ฌธ์ ์ ๋ต์ ๋น๊ตํ๋ค.
- ๋ง์ฝ ์ ๋ต์ด ๋ง์ผ๋ฉด ๊ฐ ์ํฌ์์ count ๊ฐ์ ์ฆ๊ฐ์ํจ๋ค.
- ์ ๋ต ๋น๊ต๊ฐ ๋๋ ํ, count ๊ฐ์ด ๋์ผํ ์ฌ๋์ด ์์ผ๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด ๊ณ ๋์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์๊ฐํด์ผ ํ ๊ฒ์ i๋ฒ์งธ ๋ฌธ์ ์ ๋ํด ์ธ ์ฌ๋์ด ์ด๋ค ์ ๋ต์ ํํ๋๊ฐ์ ๋๋ค.
์ฐ๋ ๋ฐฉ์์ ์ดํด๋ณด๋ฉด ๊ฐ์ ํจํด์ด ์๋๋ฐ, ์ฒ์์๋ ์ด ํจํด์ ์ํ์ ์ผ๋ก ์ ์ํ๋ ค ํ์ต๋๋ค.
๊ฐ๋ น, 1๋ฒ ์ํฌ์๋ ์ธ๋ฑ์ค i์ ๋ํด (i%5+1)์ ์ ํํ๋ค๊ณ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด์ ๋๊ฐ์ด ์ํ์ ์ผ๋ก 2๋ฒ, 3๋ฒ์ ์ ๋ต์ ์ ์ํ๋ ค๋ ์ด๋ ค์์ด ์์์ต๋๋ค.
๊ทธ๋์ ์๊ฐํ ๋ฐฉ๋ฒ์ ์ผ๋จ ๊ฐ์ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ ๋ฐฐ์ด๋ก ์ ์ํด ๋๊ณ , ์ด๋ฅผ ์ธ๋ฑ์ฑํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ฝ๋
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int cnt1=0, cnt2=0, cnt3=0;
int[] pat1={1,2,3,4,5};
int[] pat2={2,1,2,3,2,4,2,5};
int[] pat3={3,3,1,1,2,2,4,4,5,5};
for(int i=0; i<answers.length; i++){
if(answers[i]==pat1[i%5]) cnt1++;
if(answers[i]==pat2[i%8]) cnt2++;
if(answers[i]==pat3[i%10]) cnt3++;
}
ArrayList<Integer> highest = new ArrayList<>();
int mx = Math.max(Math.max(cnt1,cnt2),cnt3);
if(cnt1==mx) highest.add(1);
if(cnt2==mx) highest.add(2);
if(cnt3==mx) highest.add(3);
return highest.stream().mapToInt(Integer::intValue).toArray();
}
}
[์๊ฐ ๋ณต์ก๋]
- N: answers ๊ธธ์ด
- answers๋ฅผ ์ํํ๋ฉฐ 3๋ช ์ ์ ์๋ฅผ ๊ณ์ฐ → O(N)
- ๊ทธ ์ดํ๋ N์ ์ํฅ์ ์ ๋ฐ์ผ๋ฏ๋ก ์์ ๋ณต์ก๋
- ์ต์ข ์๊ฐ ๋ณต์ก๋ = O(N)
[์ถ๊ฐ]
์ธ ์ฌ๋์ ํจํด์ ํ๋์ 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , cnt ๊ฐ๋ 1์ฐจ์ ๋ฐฐ์ด์์ ๊ด๋ฆฌํ๋ค๋ฉด 2์ค for๋ฌธ์ผ๋ก ๋ง๋ค์ด ๋ด๋ถ์ ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- `if(answers [i]==pat [j][i% pat [j]. length]) cnt [j]++;`
'๐ช Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA) (2) | 2025.02.03 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (JAVA) (1) | 2025.02.02 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ์ ๊ณฑ์ (JAVA) (1) | 2025.02.01 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (JAVA) (0) | 2025.01.30 |