MUKER_DEV with iOS

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 성격 μœ ν˜• κ²€μ‚¬ν•˜κΈ° λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/programmers

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 성격 μœ ν˜• κ²€μ‚¬ν•˜κΈ°

MUKER 2023. 2. 1. 16:37
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

 

문제 ν‘ΈλŠ” 데 μžˆμ–΄ 도움이 λ˜λ„λ‘ λ‚˜μ˜ 풀이와 κ°œμ„ λœ 풀이λ₯Ό μ˜¬λ¦½λ‹ˆλ‹€.
λ˜ν•œ 풀이 ν›„ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό 보고 μ°Έκ³ ν• λ§Œν•œ 풀이도 μ˜¬λ¦½λ‹ˆλ‹€.

- λ¬Έμ œμ— 따라 λ‚˜μ˜ ν’€μ΄λ§Œ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή 풀이듀은 풀이 쀑 ν•˜λ‚˜μΌ 뿐 μ΅œμ„ μ˜ ν’€μ΄λŠ” 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

문제 μ„€λͺ…

 

μ„±κ²©μœ ν˜•μœΌλ‘œ

[R,T],[C,F],[M,J],[N,A]

총 4묢음의 8가지 μ„±κ²©μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

λ¬ΆμŒλ§ˆλ‹€μ˜ μœ ν˜•λ³„ μ μˆ˜κ°€ 큰 μͺ½μ΄

μ ν•©ν•œ 성격 μœ ν˜•μ΄ λ©λ‹ˆλ‹€.

λ§Œμ•½ μœ ν˜•λ³„ μ μˆ˜κ°€ κ°™λ‹€λ©΄

μ‚¬μ „μ μœΌλ‘œ 먼저인 μœ ν˜•μ΄ μ ν•©ν•œ 성격 μœ ν˜•μž…λ‹ˆλ‹€.

 

λ§Œμ•½ R: 3, T: 5 라면

Tκ°€ μ ν•©ν•œ 성격 μœ ν˜•μ΄λ˜λ©°

 

총 4묢음의 μ μ ˆν•œ μœ ν˜•μ„ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜λ©΄ λ©λ‹ˆλ‹€.

 


 

λ‚˜μ˜ 풀이

import Foundation

func solution(_ survey:[String], _ choices:[Int]) -> String {
    var personality = ["R":0,"T":0,"C":0,"F":0,"M":0,"J":0,"N":0,"A":0]
    var result = ["R","C","J","A"]
    for i in 0..<survey.count {
        let exam = Array(survey[i])
        switch choices[i] {
        case 1: personality[String(exam[0])]! += 3
        case 2: personality[String(exam[0])]! += 2
        case 3: personality[String(exam[0])]! += 1
        case 4: continue
        case 5: personality[String(exam[1])]! += 1
        case 6: personality[String(exam[1])]! += 2
        case 7: personality[String(exam[1])]! += 3
        default: break
        }
    }
    if personality["R"]! < personality["T"]! { result[0] = "T" }
    if personality["C"]! < personality["F"]! { result[1] = "F" }
    if personality["J"]! < personality["M"]! { result[2] = "M" }
    if personality["A"]! < personality["N"]! { result[3] = "N" }
    return result.joined()
}

 

λͺ¨λ“  μ„±κ²©μœ ν˜•μ„ λ”•μ…”λ„ˆλ¦¬λ‘œ λ§Œλ“€κ³ 

미리 μ„±κ²©μœ ν˜•μ˜ 기본값을 λ°°μ—΄λ‘œ λ§Œλ“€μ–΄λ’€μŠ΅λ‹ˆλ‹€.

 

survey와 choicesλŠ” 길이가 같기에

인덱슀λ₯Ό κ³΅μœ ν•˜μ—¬

μ μ ˆν•œμœ ν˜•μ— λ”•μ…”λ„ˆλ¦¬λ₯Ό μ°Ύμ•„ 점수λ₯Ό ν•©ν•΄μ€λ‹ˆλ‹€.

 

λ‹€μŒ λ¬ΆμŒλ§ˆλ‹€μ˜ 값을 λΉ„κ΅ν•˜μ—¬ 사전적단어가 ν›„ μˆœμœ„μΈ μœ ν˜•μ΄ 더 크닀면

미리 λ§Œλ“  μ„±κ²©μœ ν˜•μ˜ 기본값을 ν›„ μˆœμœ„ μœ ν˜•μœΌλ‘œ λ°”κΏ” λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

 


 

μ°Έκ³ ν• λ§Œν•œ 풀이

import Foundation

func solution(_ survey:[String], _ choices:[Int]) -> String {
    let type = [["R", "T"], ["C", "F"], ["J", "M"], ["A", "N"]]
    var score = ["R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0]
    var result = ""

    for i in 0..<survey.count {
        let first = String(survey[i].first!)
        let last = String(survey[i].last!)

        switch choices[i] {
        case 1...3:
            score[first] = score[first]! + (4 - choices[i])
        case 5...7:
            score[last] = score[last]! + (choices[i] - 4)
        default:
            break
        }
    }

    type.forEach {
        score[$0[0]]! >= score[$0[1]]! ? result.append($0[0]) : result.append($0[1])
    }
    return result
}