[코딩테스트] 신고결과받기 - Kakao 2022 BLIND
2025. 11. 5. 23:58ㆍ알고리즘
문제링크
난이도
구현
유형
구현
소요시간
20분
회고
오랜만에 푸는 문제여서 레벨 1로 워밍업했다. 중간에 런타임 에러 나는 케이스가 있어서
index 접근 런타임 에러 방지를 위해 길이가 0인 경우 탈출문을 추가했다.
코드
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
// 신고 여부 테이블
var idTable: [String:Set<String>] = [:]
// 차단 테이블
var reportTable: [String: Int] = [:]
report
.map { $0.split(separator: " ") }
.forEach { value in
if value.isEmpty { return }
let (id, target) = (String(value[0]), String(value[1]))
if !idTable[id, default: []].contains(target) {
reportTable[target, default: 0] += 1
idTable[id, default: []].insert(target)
}
}
// id: set id에서 차단 갯수 reduce
return id_list
.map { id in
let reports = idTable[id, default: []]
return reports.reduce(into: 0) { acc, next in
acc += reportTable[next, default: 0] >= k ? 1 : 0
}
}
}'알고리즘' 카테고리의 다른 글
| [코딩테스트] 📦 컨베이어 벨트 위 로봇 - 백준 20055 (0) | 2025.11.10 |
|---|---|
| [코딩테스트] 🦈 아기 상어 - BJ16236 (0) | 2025.10.22 |
| [코딩테스트] 🔌 전깃줄 - 백준 2565 (0) | 2025.10.20 |
| [코딩테스트] 🦠 연구소 - 백준14502 (0) | 2025.10.20 |
| [코딩테스트] 🧹 로봇청소기 - 백준14503 (0) | 2025.10.20 |