새소식

코딩테스트/프로그래머스

[Swift] 성격 유형 검사하기

  • -

[문제]

코딩테스트 연습 - 성격 유형 검사하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 풀이]

카카오에서 나오는 1단계들은 순서만 제대로 정해서 나눠서 풀면 풀기가 어렵지 않다.

 

1. map을 이용해서 <char, int> 변수 만들기.
2. survey를 반복 방문하면서 해당 index의 choices가 4보다 크다면 survey[i][1]을 choices - 4 값을 더해주고 아니면 survey[i][0]에 4 - choices 값을 더해주자.
3. map에 저장되어 있는 (R,T), (C,F), (J,M), (A,N) 을 비교해서 더 큰 변수 4개를 answer에 넣어주기.

 

나는 위와 같은 3단계로 나누어서 풀었고 마지막에 if else 문을 이용하면 코드가 길어지기에 삼항 연산자를 사용해서 가독성을 올렸다.

[회고]

카카오 1단계는 문제만 잘 보면 어렵지 않다. 실제 코테를 대비해서 문제 보는 연습을 하자.

[코드]

import Foundation

func solution(_ survey:[String], _ choices:[Int]) -> String {
    var answer: String = ""
    var types = [Character: Int]()
    types = ["R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0]
    
    for i in 0..<survey.count {
        if choices[i] > 4 {
            types[survey[i].last!]! += choices[i] - 4
        }
        else if choices[i] < 4 {
            types[survey[i].first!]! += 4 - choices[i]
        }
    }
    
    answer += (types["R"]! >= types["T"]!) ? "R" : "T"
    answer += (types["C"]! >= types["F"]!) ? "C" : "F"
    answer += (types["J"]! >= types["M"]!) ? "J" : "M"
    answer += (types["A"]! >= types["N"]!) ? "A" : "N"
    
    return answer
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.