-
[Programmers] ๋ชจ์๊ณ ์ฌTECH/Algorithm 2022. 1. 8. 23:19
๋ฌธ์ ์ค๋ช
์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์ ๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 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ํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
Python
def solution(answers): answer = [] score = [0,0,0] person1 = ([1, 2, 3, 4, 5]*len(answers))[:len(answers)] person2 = ([2, 1, 2, 3, 2, 4, 2, 5]*len(answers))[:len(answers)] person3 = ([3, 3, 1, 1, 2, 2, 4, 4, 5, 5]*len(answers))[:len(answers)] for i in range(len(answers)): if answers[i] == person1[i]: score[0] += 1 if answers[i] == person2[i]: score[1] += 1 if answers[i] == person3[i]: score[2] += 1 for i in range(3): if score[i] == max(score): answer.append(i+1) return answer
์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ์ค์ผ ์ ์์ ๊ฒ ๊ฐ์๋ฐ, ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๋
enumarate
๋ฅผ ๋ง์ด ์ฐ๋๋ผ. ์ฌ์ฉํด ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.def solution(answers): answer = [] score = [0,0,0] patterns = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]] for idx, num in enumerate(answers): if num == patterns[0][idx % len(patterns[0])]: score[0] += 1 if num == patterns[1][idx % len(patterns[1])]: score[1] += 1 if num == patterns[2][idx % len(patterns[2])]: score[2] += 1 for i in range(3): if score[i] == max(score): answer.append(i+1) return answer
1. answers๊ณผ ์ํฌ์๋ค์ ๋ต์ ๋ง์ถฐ ๋ณด๋ ๊ณผ์ ์์, % ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฌ์๋ค์ ์ ๋ต ํจํด ์์์ ๋ต์ ๋ง์ถ ์ ์๊ณ , ๋ฐ๋ผ์ ์ผ์ผ์ด answers์ ๊ฐ์๋งํผ ์๋ก์ด ์ ๋ต ๋ฐฐ์ด์ ๋ง๋ค์ง ์์๋ ๋๋ค.
2. max()๋ list์ ์ ์ฉํ ์ ์๋ค.
3. enumerate()๋ฅผ ์ฌ์ฉํ์ฌ index์ value๋ฅผ ํ ๋ฒ์ ๊บผ๋ผ ์ ์๋ค.
JavaScript
function solution(answers) { var answer = []; let score = [0,0,0]; const patterns = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]; answers.forEach((num, idx) => { if (num === patterns[0][idx % patterns[0].length]) { score[0] += 1; } if (num === patterns[1][idx % patterns[1].length]) { score[1] += 1; } if (num === patterns[2][idx % patterns[2].length]) { score[2] += 1; } }) for (let i = 0; i < score.length; i++) { if (score[i] === Math.max(...score)){answer.push(i+1)} } return answer; }
python๊ณผ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก JavaScript๋ก ํ์ด ๋ณด์๋ค.
1. Array Method๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์์ง ์ํฐ ๊ฒ ๊ฐ๊ธฐ๋....... ํ์ด๋ฅผ ๋ณด๋ filter๋ฅผ ์ด ์ฌ๋๋ ์๋๋ฐ, ์ฌ์ฉ๋ฒ์ ๋ํด ๋ ๊ณต๋ถํด์ผ ํ ๊ฒ ๊ฐ๋ค.
2. max() ์ฌ์ฉํ ๋ ๋ฐฐ์ด์ ์ง์ ๋ฃ์ผ๋ ค๋ฉด max(score)๊ฐ ์๋ max(...score)์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ์ ๋ ํ๊ธฐ.
'TECH > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ] ํฐ๋ฆฐ๋๋กฌ ์ฐ๊ฒฐ๋ฆฌ์คํธ (0) 2021.08.16