티스토리 뷰
2022년 카카오 블라인드 채용 문제
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
주석으로 설명 대체.
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
let reports = Array(Set(report)) // 중복을 제거
var reportList: [String: [String]] = [:] // 신고당한 사람 : 신고한사람
var result = Array(repeating: 0, count: id_list.count) // 결과를 담을 배열
var ids: [String: Int] = [:] // 딕셔너리에 인덱스를 가져가기 위함
for (index, id) in id_list.enumerated() { // 리스트로 받아온 인덱스를 기억해줌
ids[id] = index
reportList[id] = [] // 신고 명단도 만들기 위함
}
for report in reports {
let reported = report.components(separatedBy: " ") // 신고서를 "" 기준으로 분리
reportList[reported[1]]!.append(reported[0]) // 신고한사람 신고당한 사람 순이므로 딕셔너리에는 0과 1을 바꿔서 append
}
for ban in ids { // 인덱스를 가진 딕셔너리에서
if reportList[ban.key]!.count >= k { // 신고당한 횟수가 k보다 크면
reportList[ban.key]!.forEach { name in
result[ids[name]!] += 1 // 이름을 가진 인덱스를 찾아서 그 위치 인덱스를 이용하여 result에 count를 1증가
}
}
}
return result
}
'코딩테스트' 카테고리의 다른 글
| Swift 크레인 인형뽑기 - 프로그래머스 (0) | 2022.06.02 |
|---|---|
| Swift 키패드누르기 - 프로그래머스 (0) | 2022.06.02 |
| Swift 숫자 문자열과 영단어 - 프로그래머스 (0) | 2022.06.02 |
| Swift 신규 아이디 추천 - 프로그래머스 (0) | 2022.06.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- subscriber
- 스토리보드 분할
- 롯데 렌탈
- 의존성 주입
- 코딩테스트
- Combine
- 롯데그룹 공개채용
- osi7계층
- ios
- 야곰
- Swift
- 화면 이동
- Decodable
- DIP
- Operator
- dataSource
- 운영체제
- Publisher
- Codable
- 공개 채용
- 야곰 아카데미
- 취준
- 프로그래머스
- Encodable
- UITableViewDataSource
- 반효경
- Parse
- UITableViewDelegate
- 개발자 취업
- 프로젝트에 적용
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함