[프로그래머스] 성격 유형 검사하기 - Swift

이창형·2023년 5월 12일
0

https://school.programmers.co.kr/learn/courses/30/lessons/118666
문제링크 !!
문제가 길어요

코드

import Foundation

func solution(_ survey:[String], _ choices:[Int]) -> String {
	// 무슨 알파벳이 있는지와 알파벳의 점수를 저장할 공간
    var dic = [String:Int]()
    var answer = ""
    
    // 알파벳을 dic에 담기
    for i in survey {
        for j in i {
            if dic[String(j)] == nil {
                dic[String(j)] = 0
            }
        }
    }
    // 알파벳 점수 매기기
    for idx in 0..<choices.count {
        let s = survey[idx].map{String($0)}
        
        switch choices[idx] {
            case 1:
                dic[s[0]]! += 3
            case 2:
                dic[s[0]]! += 2
            case 3:
                dic[s[0]]! += 1
            case 4:
                continue
            case 5:
                dic[s[1]]! += 1
            case 6:
                dic[s[1]]! += 2
            case 7:
                dic[s[1]]! += 3
            default:
                break
        }
    }
	
    
    // 알파벳 짝지어서 점수 계산 후 answer에 순서대로 저장
    if (dic["R"] ?? 0) >= (dic["T"] ?? 0) {
        answer.append("R")
    } else {
        answer.append("T")
    }
    
    if (dic["C"] ?? 0) >= (dic["F"] ?? 0) {
        answer.append("C")
    } else {
        answer.append("F")
    }
    
    if (dic["J"] ?? 0) >= (dic["M"] ?? 0) {
        answer.append("J")
    } else {
        answer.append("M")
    }
    
    if (dic["A"] ?? 0) >= (dic["N"] ?? 0) {
        answer.append("A")
    } else {
        answer.append("N")
    }
    
    
    return answer
}

회고

  • 카카오 1단계 문제는 풀 수 있는 것 같아 행복하다
  • 카카오 2단계도 이렇게 쉽게 풀렸으면
  • 흐름대로 코드를 짰는데 시간초과 안떠서 좋다
profile
iOS Developer

0개의 댓글