Notice
Recent Posts
Recent Comments
Tags
- dp 알고리즘
- 백준
- 백준 다이나믹프로그래밍
- 장고
- 바닥장식 파이썬
- 코테 연습
- 코딩테스트
- spring 기초
- 코테
- 장고 기초
- 프로그래머스 전화번호 목록 파이썬
- 프로그래머스 레벨1
- 프로그래머스
- programmers
- 스프링 기초
- 알고리즘 공부
- 스프링 초보
- Spring 초보
- Django 기초
- 코딩테스트 연습
- 프로그래머스 level1
- 프로그래머스 레벨2
- 프로그래머스 전화번호 목록 python
- 백준 dp
- 백준 바닥장식 python
- 알고리즘 문제
- 전화번호 목록 python
- 프로그래머스 고득점 kit
- 프로그래머스 알고리즘 고득점 kit
- Django
Archives
- Today
- Total
일일구름 IT
프로그래머스 lv.1 [신고 결과 받기] 2022 KAKAO BLIND RECRUITMENT 본문
문제설명
신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.
- 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
- 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
- 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
- k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
- 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.
문제풀이
# 신고 결과 받기
import numpy as np
def solution(id_list, report, k):
answer = [0]*len(id_list)
user = [[0] * len(id_list) for i in range(len(id_list))]
check_list = [0]*len(id_list)
for i in range(0,len(report)):
a = report[i].split()
user[id_list.index(a[0])][id_list.index(a[1])] = 1
for i in range(0, len(id_list)):
for j in range(0, len(id_list)):
check_list[i] += user[j][i]
if check_list[i] >= k:
for o in range(0, len(id_list)):
if user[o][i] == 1:
answer[o] += 1
break
#print(answer)
return answer
#id_list = ["con", "ryan"]
#report = ["ryan con", "ryan con", "ryan con", "ryan con"]
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
solution(id_list, report, 2)
- user[신고한 자][신고 받은 자] 2차 list 생성
- check_list를 만들어 신고 받은 횟수를 넣음
- 똑같은 유저가 한 유저를 계속 신고하여도 1회로 인정 → 중복을 제거하는 것이 중요하다고 생각함
- 따라서 몇 번을 신고해도 중복이 안되도록 user list에 +=1이 아닌 =1을 해줌.
다른 사람의 풀이:
def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports[r.split()[1]] += 1
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
- {x: 0 for x in list}
- set()을 이용해 report 리스트에 중복되는 요소를 제거해줌
구글링한 것
[[0] * len(id_list) for i in range(len(id_list))]
https://loud-scorpion-36f.notion.site/dbb443db89c04038ae64b9401ee43cc7
'프로그래머스 > 프로그래머스 lv.1' 카테고리의 다른 글
프로그래머스 lv.1 [크레인 인형 뽑기] 2019 카카오 개발자 겨울 인턴십 게임 (0) | 2022.07.06 |
---|---|
프로그래머스 lv.1 [키패드 누르기] 2020 카카오 인턴십 (0) | 2022.07.06 |
프로그래머스 lv.1 [숫자 문자열과 영단어] 2021 카카오 채용연계형 인턴십 (0) | 2022.07.06 |
프로그래머스 lv.1 [신규 아이디 추천] 2021 KAKAO BLIND RECRUITMENT (0) | 2022.07.05 |
프로그래머스 lv.1 [로또의 최고 순위와 최저 순위] 2021 Dev-Matching: 웹 백엔드 개발자 (0) | 2022.07.05 |