0316 TIL

looggi·2023년 3월 16일
0

TILs

목록 보기
37/114
post-thumbnail

프로그래머스 문제풀기

➡️ 개인정보 날짜 합치는 걸로 다시 풀어보기

def solution(today, terms, privacies):
    today=list(map(int,today.split('.')))
    std=today[0]*12*28+today[1]*28+today[2]
    terms=dict([x.split(' ') for x in terms]) #약관 종류, 유효기간
    privacies=[x.split(' ') for x in privacies]
    answer=[]
    for i,p in enumerate(privacies):
        date,kind = p
        date=list(map(int,date.split('.')))
        y=date[0]
        m=date[1]
        d=date[2]
        if y*12*28+m*28+d+int(terms[kind])*28<=std:
            answer.append(i+1)
    return answer

비교해야하는 날짜들을 일수로 바꿔서 비교하는 방법
간단하고 쉽고 예외처리할 것도 없다

map object는 iterable이라 반복문을 돌릴수는 있지만 subscriptable은 안되기때문에 인덱스를 사용하려면 리스트로 꼭 바꿔줘야한다⭐

➡️ 신고 결과 받기

from collections import Counter

def solution(id_list, report, k):
    
    ans=dict([x for x in zip(id_list,[0]*len(id_list))]) 
    er_ee=[x.split(' ') for x in set(report)]
    re_list= [kk for kk,v in Counter([x[1] for x in er_ee]).items() if v>=k]
        
    for e in er_ee:
        er,ee=e
        if ee in re_list:
            ans[er]+=1
    return list(ans.values())

Counter 쓰는 거 습관들어서 안되겠다 ..

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 id_list} 이렇게 만들 수 있다 ⭐⭐⭐

profile
looooggi

0개의 댓글