[Algorithm] λͺ¨μκ³ μ¬ (μμ νμ)
π₯ λ¬Έμ
μν¬μλ μνμ ν¬κΈ°ν μ¬λμ μ€λ§μ
λλ€. μν¬μ μΌμΈλ°©μ λͺ¨μκ³ μ¬μ μν λ¬Έμ λ₯Ό μ λΆ μ°μΌλ € ν©λλ€. μν¬μλ 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 ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
π€ νμ΄ λ°©λ²
κ° μν¬μκ° μ°λ λ°©μμ λ΄μ 3κ°μ λ°°μ΄κ³Ό 3λͺ
μ μ μλ₯Ό λ΄μ score λ°°μ΄μ νλ λ§λ€μ΄μ€λ€.
λ°°μ΄μ 0λ²μ§Έλ 1λ² μν¬μμ μ μ, 1λ²μ§Έλ 2λ² μν¬μμ μ μ, 2λ²μ§Έλ 3λ² μν¬μμ λ°°μ΄μ μ μ₯ν κ²μ΄λ€.
forλ¬Έμ λλ©° answersμ 3λͺ
μ λ΅μ κ°κ° λΉκ΅νμ¬ κ°μ κ²½μ° scoreμ 1μ λν΄μ€λ€.
μ΄λ % μ°μ°μλ₯Ό μ¬μ©νμ¬ 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, ... μ κ°μ μμλ‘ λΉκ΅νλ€.
λ΅μ λ€ λΉκ΅ν νμ κ°μ₯ λ§μ λ¬Έμ λ₯Ό λ§ν κ°μλ₯Ό maxμ μ μ₯νλ€.
κ·Έ ν λ€μ forλ¬Έμ λλ©° maxκ°μ λ΅μ λ§ν μν¬μμ λ²νΈλ₯Ό μ μ₯νμ¬ μ΄λ₯Ό 리ν΄νμλ€.
λμ λ리λ₯Ό μ¬μ©νμ¬ νλ©΄ λ μ§κ΄μ μ΄κ² μ½λλ₯Ό μ§€ μ μμ κ² κ°λ€.
π©π»π» Swift Code
import Foundation
func solution(_ answers:[Int]) -> [Int] {
var person1 = [1, 2, 3, 4, 5]
var person2 = [2, 1, 2, 3, 2, 4, 2, 5]
var person3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
var score = [0, 0, 0]
var answer: [Int] = []
for i in 0..<answers.count {
if answers[i] == person1[i % 5] {
score[0] += 1
}
if answers[i] == person2[i % 8] {
score[1] += 1
}
if answers[i] == person3[i % 10] {
score[2] += 1
}
}
let max = score.max()!
for i in 0..<score.count {
if score[i] == max {
answer.append(i + 1)
}
}
return answer
}
μ½λ©ν μ€νΈ μ°μ΅ - λͺ¨μκ³ μ¬
μν¬μλ μνμ ν¬κΈ°ν μ¬λμ μ€λ§μ λλ€. μν¬μ μΌμΈλ°©μ λͺ¨μκ³ μ¬μ μν λ¬Έμ λ₯Ό μ λΆ μ°μΌλ € ν©λλ€. μν¬μλ 1λ² λ¬Έμ λΆν° λ§μ§λ§ λ¬Έμ κΉμ§ λ€μκ³Ό κ°μ΄ μ°μ΅λλ€. 1λ² μν¬μκ° μ°λ
programmers.co.kr