# 1296. 팀 이름 정하기

raindrop·2022년 9월 28일
0
post-thumbnail
post-custom-banner

백준 1296

풀이계획

  1. 이름들을 제시된 공식을 활용해서 점수화한다(함수 선언하기)
  2. 딕셔너리를 선언해 팀 이름을 key로, 점수를 value로 저장한다
  3. 딕셔너리를 value우선으로 정렬하고, key로 정렬해준다
    (👉🏻점수로 정렬되고, 이름은 사전순으로 정렬된다)
  4. 딕셔너리의 맨 앞 요소가 정답이 된다

📌 Skill

  • 문자열에서 특정 문자가 몇 번 나오는지 구하기
  • 딕셔너리를 key와 value값을 토대로 정렬하기
let yeonDuName = readLine()!
let n = Int(readLine()!)!
var points = [String: Int]()
// let sortedPoints: Dictionary<String, Int>

func countPoints(name: String) -> Int {

    let L = name.filter { $0 == "L" }.count + yeonDuName.filter { $0 == "L" }.count
    let O = name.filter { $0 == "O" }.count + yeonDuName.filter { $0 == "O" }.count
    let V = name.filter { $0 == "V" }.count + yeonDuName.filter { $0 == "V" }.count
    let E = name.filter { $0 == "E" }.count + yeonDuName.filter { $0 == "E" }.count
    return ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E)) % 100
}

for _ in 0..<n {
    let name = readLine()!
    let point = countPoints(name: name)
    points[name] = point
}

let sortedPoints = points.sorted {(first, second) in
    if first.value == second.value {
        return first.key < second.key
    }
    return first.value > second.value
}

print(sortedPoints.first!.key)

***새로 배운 것

딕셔너리.sorted를 사용하면 타입이 Array로 바뀌게 된다
새로운 변수에 결과를 할당하자

post-custom-banner

0개의 댓글