반응형
○
Level 1 2024 KAKAO WINTER INTERNSHIP (1시간)
Programmers 가장 많이 받은 선물
레벨 1이 한시간 걸릴 일인가요..!! ㅠㅠ
카카오는 문제가 너무 길어서 읽고 이해하는데만 10분 걸림 ;;
1. 두 친구 사이 선물 횟수 비교
-> 더 많이 준 사람에게 + 1
2. (선물 횟수가 같거나 없다면) 선물 지수 비교
-> 선물 지수 큰 사람에게 + 1
그냥 다 딕셔너리에 저장해버렸지만
문제에서 예시 보여준 것 처럼 2차원 배열로 만들어서 풀어줘도 될둣
print(solution(["muzi", "ryan", "frodo", "neo"], ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"])) //2
print(solution(["joy", "brad", "alessandro", "conan", "david"], ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"])) //4
print(solution(["a", "b", "c"], ["a b", "b a", "c a", "a c", "a c", "c a"])) //0
func solution(_ friends:[String], _ gifts:[String]) -> Int {
var giftCases = [String: Int]()
var result = [String: Int]()
for friend in friends {
result[friend] = 0
// 두 친구 사이 선물 횟수 비교
for f in friends {
if f != friend, giftCases[f + " " + friend] == nil {
giftCases[friend + " " + f] = 0
}
}
}
var giveCounts = [String: Int]()
var getCounts = [String: Int]()
for gift in gifts {
let names = gift.split(separator: " ").map { String($0) }
giveCounts[names[0], default: 0] += 1
getCounts[names[1], default: 0] += 1
if giftCases[gift] != nil {
giftCases[gift]! += 1
} else if giftCases[names[1] + " " + names[0]] != nil {
giftCases[names[1] + " " + names[0]]! -= 1
}
}
for giftCase in giftCases {
let names = giftCase.key.split(separator: " ").map { String($0) }
if giftCase.value == 0 {
// 선물 지수 비교
let one = (giveCounts[names[0]] ?? 0) - (getCounts[names[0]] ?? 0)
let two = (giveCounts[names[1]] ?? 0) - (getCounts[names[1]] ?? 0)
if one - two > 0 { result[names[0]]! += 1 }
if one - two < 0 { result[names[1]]! += 1 }
} else {
if giftCase.value > 0 {
result[names[0]]! += 1
} else {
result[names[1]]! += 1
}
}
}
return result.values.max() ?? 0
}
어휴 복잡하다 복잡해..
이렇게 풀어도 되는걸까요.. ㅎ
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Swift 알고리즘] Programmers 다음 큰 숫자 (0) | 2022.11.13 |
---|---|
[Swift 알고리즘] Programmers 피보나치 수 (0) | 2022.11.13 |
[Swift 알고리즘] Programmers 멀리뛰기 (0) | 2022.11.13 |
[Swift 알고리즘] Programmers 뉴스 클러스터링 (0) | 2022.11.10 |
[Swift 알고리즘] Programmers 타겟 넘버 (0) | 2022.11.05 |