https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
변수
- people1 : 1,2,3,4,5 로 찍는 사람의 패턴
- people2: 2,1,2,3,2,4,2,5 로 찍는 사람의 패턴
- people3: 3,3,1,1,2,2,4,4,5,5로 찍는 사람의 패턴
- count: key값으로 1번,2번,3번을 가지고 value값으로 맞춘 문제의 갯수를 담는 [Int:Int]형 딕셔너리
내풀이
answer의 개수가 people.count 보다 작거나 같을때 answer요소에 people1,2,3의 요소를 차례로 비교해 같으면
count key에 맞는 value를 1씩 증가시킴
answer의 개수가 people.count보다 클 경우에 people의 수가 같거나 더 커질때까지
people1,2,3 += people1,2,3을 반복하도록 하였다. 모든 문항을 채점할 수 있으면 마찬가지로 answer요소에 people1,2,3의 요소를 차례로 비교해 같으면 count key에 맞는 value를 1씩 증가시킴
filter 메서드를 이용해 count의 value의 최대치 max의 값과 같은 key값을 필터링하였고 sorted 메서드를 이용해 오름차순으로 정렬하도록 하였음
import Foundation
func solution(_ answers:[Int]) -> [Int] {
var people1 = [1,2,3,4,5]
var people2 = [2,1,2,3,2,4,2,5]
var people3 = [3,3,1,1,2,2,4,4,5,5]
var count = [1:0, 2:0, 3:0]
if answers.count <= people1.count{
for i in 0..<answers.count{
if answers[i] == people1[i]{
count[1]! += 1
}
if answers[i] == people2[i]{
count[2]! += 1
}
if answers[i] == people3[i]{
count[3]! += 1
}
}
}
else{
while people1.count < answers.count{
people1 += people1
}
while people2.count < answers.count{
people2 += people2
}
while people3.count < answers.count{
people3 += people3
}
for i in 0..<answers.count{
if answers[i] == people1[i]{
count[1]! += 1
}
if answers[i] == people2[i]{
count[2]! += 1
}
if answers[i] == people3[i]{
count[3]! += 1
}
}
}
return count.filter{$0.value == count.values.max()}.keys.sorted()
}
'Swift랑 친해지기 > programmers 풀기' 카테고리의 다른 글
[프로그래머스] 저주의 숫자 3 (Swift) (0) | 2022.11.10 |
---|---|
[프로그래머스] 프린터 (Swift) (0) | 2022.11.09 |
[프로그래머스] 세균 증식 (Swift) (0) | 2022.11.07 |
[프로그래머스] 7의개수 (Swift) (0) | 2022.11.07 |
[프로그래머스] 삼각형의 완성조건 (1) (Swift) (0) | 2022.11.04 |