- 2022 KAKAO BLIND RECRUITMENT
- 신고 결과 받기
- Level 1
문제
- 신고 횟수에 제한 없이 다른 유저를 계속 신고할 수 있음
- 한 유저에 대해서도 여러 번 신고가 가능하나, 동일 유저에 대한 신고 횟수는 1회로 처리됨
- k번 이상 신고된 유저는 이용이 정지됨
- 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 보냄
- 각 유저 별로 메일을 받은 횟수 반환하기
- id 개수 : 2이상 1,000 이하. 중복 없음
- report 개수 : 1이상 200,000 이하. 이용자_id 신고한_id 형태의 문자열
- k : 1이상 200 이하
Idea
- 각 유저 별로 신고한 id 목록 구하기
- 각 유저 별로 신고 받은 횟수 구하기
- 각 유저 별로 신고한 id 가 k 이상인지 확인하여 메일 받은 횟수 구하기
Code
Swift
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
var report_log: [String:[String]] = [:]
var report_count: [String:Int] = [:]
for log in report {
let l = log.components(separatedBy: " ")
let report_list = report_log[l[0]] ?? []
if !report_list.contains(l[1]) {
report_log[l[0]] = report_list + [l[1]]
let count = report_count[l[1]] ?? 0
report_count[l[1]] = count + 1
}
}
var result: [Int] = []
for id in id_list {
if let report_list = report_log[id] {
var count = 0
for name in report_list {
if let n = report_count[name], n >= k {
count += 1
}
}
result.append(count)
} else {
result.append(0)
}
}
return result
}
'# Algorithm > --- 프로그래머스' 카테고리의 다른 글
[프로그래머스] 배달 with Swift (0) | 2022.06.23 |
---|---|
[카카오] 순위 검색 (0) | 2022.03.15 |
[카카오] 튜플 (0) | 2022.03.14 |
[프로그래머스] 최솟값 만들기 (0) | 2022.01.26 |
[프로그래머스] 피보나치 수 (0) | 2022.01.26 |