Skip to content

[Algorithm] 신고 결과 받기_re #40

Description

@hwangJi-dev

💬 문제

[코딩테스트 연습 - 신고 결과 받기](https://school.programmers.co.kr/learn/courses/30/lessons/92334)


💬 Idea

  1. 신고 기록을 담는 [String: [String]]형 딕셔너리, 신고된 기록을 담는 [String: Int]형 딕셔너리를 만들어 id_report를 돌며 해당 딕셔너리를 채운다.
    1. 이 때, 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. 라는 조건을 만족하기 위해 for문을 돌 때 Set처리를 해준다.
  2. 결과를 도출한다.
    1. 딕셔너리는 순서가 없는데, return해야하는 결과값은 id_list의 순서와 같아야 하므로
    2. id_list를 돌며
      1. report_list가 존재하는 id의 경우 해당 신고 기록들에서 k번 이상의 신고를 받은 유저의 count를 필터링하여 append하고
      2. report_list가 존재하지 않는 id의 경우 0을 append 하여 최종 결과를 도출한다.

💬 풀이

func solution(_ id_list:[String], _ report:[String], _ k:Int)->[Int]{varreport_list:[String:[String]]=[:]varreported_list:[String:Int]=[:]varresult:[Int]=[]forid_reportinSet(report){letlist= id_report.components(separatedBy:.whitespaces)report_list[list[0]]=report_list[list[0]]!=nil?report_list[list[0]]! +[list[1]]:[list[1]]reported_list[list[1]]=reported_list[list[1]]!=nil?reported_list[list[1]]! +1:1}
// ✅ report_list
// ["apeach": ["muzi", "frodo"], "frodo": ["neo"], "muzi": ["neo", "frodo"]]
// ✅ reported_list
// ["neo": 2, "frodo": 2, "muzi": 1]
id_list.forEach{
result.append(report_list[$0]!=nil?(report_list[$0]?.filter({reported_list[$0]! >= k }).count)! :0)}return result
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions