Swift랑 친해지기/programmers 풀기

[프로그래머스] 모의고사 (Swift)

데브킹덕 2022. 11. 8. 12:04

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()
}