일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터 분석
- 알파줄거리
- GA4
- 영화 올드 줄거리
- ㅂㅂ
- 벚꽃
- GA
- 프로그래머스
- 코오롱베네트
- 얼음여왕
- 채용공고
- 기사스크랩
- 티스토리
- 감사인사
- Google Analytics
- 6시 기상
- Python
- 벚꽃개화시기
- 니다
- 구글애널리틱스
- 코딩
- 명상
- 미라클 모닝
- 데이터문해력
- 수명예측 인공지능
- 구글애널리틱스4
- 독서
Archives
- Today
- Total
Data Analyst KIM
[프로그래머스Lv1] 신고 결과 받기(파이썬) 본문
반응형
<문제 풀이>
1. id_list에게 메일을 보내는 횟수를 나타낼 리스트를 만들자 => answer
2. 신고 횟수를 누적하는 방을 딕셔너리를 만들자 => report_all
3. report에 중복되는 값을 제거하자 => set(report)
4. 중복되지 않는 report를 split하고 1번 인데스의 값을 신고 횟수 누적하는 딕셔너리에 누적하자.
5. 딕셔너리에 누적된 값이 k보다 크거나 같으면
6. report를 split한 0번째 인덱스의 값이 id_list에 해당하는 리스트의 인덱스에 메일을 보내는 횟수의 리스트(answer)에 1을 더해라
def solution(id_list, report, k):
answer = [0] * len(id_list)
report_all = {i : 0 for i in id_list}
for i in set(report):
report_all[i.split(' ')[1]] += 1
for i in set(report):
if report_all[i.split(' ')[1]] >= k :
answer[id_list.index(i.split(' ')[0])] += 1
return answer
코드를 활용해서 최대한 줄일 수 있는 방향으로 생각하면서 위에 코드를 만들었다.
처음에는 문제에서의 흐름만 따라가면서 코드를 작성해봤는데 예시 문제 2개는 통과를 했지만
제출을 하면 틀리거나 시간초과가 대부분이였다.
그래서 최대한 줄이는 방향으로 생각을 했고 과정의 코드는 생략했지만 최종적으로 위와 같이 코드를 작성할 수 있었다.
처음에는 이중 for문과 여러개의 list를 활용해서 사용해서 그런지 매우 비효율적이였다.
그래서 가장 효율적인 방법을 생각해내다가 딕셔너리와 set함수를 활용했다.
<처음 시도한 코드>
def solution(id_list, report, k):
answer = [0]*len(id_list)
count= [0]*len(id_list)
lst = []
kkk = []
for i in range(len(report)) :
a = report[i].split(' ')
if a not in lst : # 동일한 유저ID와 유저가 신고한 ID가 동일하면 삭제
lst.append(a)
for i in range(len(lst)): # 신고당한 횟수를 계산
for v in range(len(id_list)) :
if lst[i][1] == id_list[v] :
count[v] += 1
else :
pass
for a,b in zip(count,id_list):
if a >=2 :
kkk.append(b)
for i in range(len(lst)):
if lst[i][1] in kkk :
idx = id_list.index(lst[i][0])
answer[idx] += 1
return answer
반응형
'데이터 분석 > Coding Test' 카테고리의 다른 글
[프로그래머스_SQL] Lv3_카테고리 별 도서 판매량 집계하기 (0) | 2023.10.16 |
---|---|
[프로그래머스_SQL] Lv3_오랜 기간 보호한 동물(1) (0) | 2023.10.16 |
[프로그래머스Lv1] 키패드 누르기(파이썬) (0) | 2023.08.16 |
[프로그래머스Lv.1] 콜라 문제(Python) (0) | 2023.08.10 |
[프로그래머스Lv.1] 과일 장수 - 파이썬 (0) | 2023.07.20 |