-
[99클럽 코테 스터디 22일차 TIL] 오랜만입니다!99클럽 2024. 4. 15. 23:57
0. 오랜만에 등장한 이유
미션 성공했다고 해이해진게 아니라요.. 진짜 취준 때문에 정신이 없었습니다! 자소서 자소서 코테 인적성 어쩌구 저쩌구..... 그래도 오늘은 정기 스터디 날이니까 바로 참여했음! 칭찬해주세요 ㅎㅎ...

넵....ㅜ 1. 99클럽 Python 미들러 문제 풀이
[프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / Lv1. 신고 결과 받기]
https://school.programmers.co.kr/learn/courses/30/lessons/92334
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr


k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송한다. 이때 각 유저가 받은 메일 개수를 리턴하는 문제였다.
문제 해결 방법1. {'유저 ID' : 유저의 인덱스 번호}와 같이 유저의 인덱스를 기록할 id 딕셔너리 생성 후 id_list의 인덱스로 초기화
2. {'유저 ID' : 유저가 받은 메일 개수}와 같이 유저가 받은 메일 개수를 기록할 answer 딕셔너리 생성 후 0으로 초기화
3. 유저의 인덱스에 따라 자신을 신고한 유저 ID를 담을 2차원 리스트 user 생성
4. 동일한 유저에 대한 신고 횟수는 1회로 처리되므로, set(report)를 통해 중복 제거
5. 신고한 유저, 신고 당한 유저로 split()한 후 user 리스트의 신고당한 유저의 인덱스에 신고한 유저 ID 삽입
6. user 리스트의 각 유저를 신고한 유저 ID 개수가 k개 이상일 경우, 신고한 유저의 메일 개수 1개 증가(answer 딕셔너리)
def solution(id_list, report, k): # 유저의 인덱스 번호를 알려줄 딕셔너리 id = dict() # 유저가 받은 메일 개수를 담을 딕셔너리 answer = dict() # 유저 수만큼 반복하며 id에는 유저 인덱스를, answer에는 0으로 초기화 for i in range(len(id_list)): id[id_list[i]] = i answer[id_list[i]] = 0 user = [[] for _ in range(len(id_list))] # 각 유저의 인덱스에 해당 유저를 신고한 유저 ID를 삽입 for i in set(report): a, b = i.split(" ") user[id[b]].append(a) # 유저의 신고 횟수가 k 이상이라면 신고한 유저에게 전송할 메일 개수 증가 for u in user: if len(u) >= k: for i in u: answer[i] += 1 return list(answer.values())2. 회고
신고한 유저, 신고 당한 유저 어쩌구.. 하느라 풀이 설명이 복잡한 거 같다.. 그치만.. 내 말주변이 좀 부족한 거로 하자.. 내 글을 누가 읽을지는 모르겠지만.. 보시는 분은 똑똑할 거니까 찰떡같이 이해할 거라고 믿을게요..!
'99클럽' 카테고리의 다른 글
[99클럽 코테 스터디 25일차 TIL] 드디어 코테 합격 (4) 2024.04.18 [99클럽 코테 스터디 23일차 TIL] 내게 와 투 포인터 (1) 2024.04.16 [99클럽 코테 스터디 18일차 TIL] 미션 성공! (2) 2024.04.11 [99클럽 코테 스터디 17일차 TIL] 멀리 돌아가버리기 (2) 2024.04.10 [99클럽 코테 스터디 16일차 TIL] 취준은 너무 어려워 (0) 2024.04.09