728x90
[Swift] 프로그래머스 신고 결과 받기(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/92334
2. 접근
'메일'이 보내진 횟수를 세야하는 것이 포인트이다.
한 사람이 동일 유저를 신고하는 것은 1회로 처리한다는 점도 유의해야 한다.
그래서 reportCount 딕셔너리에는 id를 key로, set을 value로 만들어 신고한 사람이 총 몇 명인지 셀 수 있게 해주었다.
mailCount는 reportCount의 set의 크기 만큼 올라갈 것이다.
그러면 답변에는 id_list와 동일하게 순서를 하여 메일을 받을 숫자들을 append 해준다. 그러면 답변이 구해진다.
문자열을 잘 분해하여 딕셔너리를 잘 활용하여 숫자를 카운팅하는, 구현 문제였다.
3. 코드
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
var reportCount: Dictionary = [String : Set<String>]()
var mailCount: Dictionary = [String : Int]()
for i in id_list {
reportCount[i] = Set<String>()
mailCount[i] = 0
}
for j in report {
reportCount[String(j.split(separator: " ")[1])]!.insert(String(j.split(separator: " ")[0]))
}
for (_, value) in reportCount {
if value.count >= k {
for j in value {
mailCount[j]! += 1
}
}
}
var answer = [Int]()
for i in id_list {
answer.append(mailCount[i]!)
}
return answer
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 햄버거 만들기(lv. 1) (0) | 2023.02.25 |
---|---|
[Swift] 프로그래머스 개인정보 수집 유효기간(lv. 1) (0) | 2023.02.24 |
[Swift] 프로그래머스 성격 유형 검사하기(lv. 1) (0) | 2023.02.21 |
[Swift] 프로그래머스 문자열 나누기(lv. 1) (0) | 2023.02.20 |
[Swift] 프로그래머스 과일 장수(lv. 1) (0) | 2023.02.18 |
댓글