코딩테스트

코딩테스트 연습_2023 KAKAO 개인정보 수집 유효기간_zfill()

끈끈 2023. 4. 28. 21:38

Lv. 1, 38%

 

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

페어프로그래밍으로 작성한 코드:

def solution(today, terms, privacies):
    answer = []
    today_list = int(''.join(list(today.split("."))))  # 20200101
    term = {}  # {'Z': '3', 'D': '5'}

    for te in terms:
        term[te.split(" ")[0]] = te.split(" ")[1]
    for i, pri in enumerate(privacies, start=1):
        pri_date = list(map(int, pri.split(" ")[0].split('.')))  # 발급 날짜
        pri_alpha = pri.split(" ")[1]  # 발급 약관 종류
        month = pri_date[1] + int(term[pri_alpha])

        pri_date[0] += month // 12
        month = month % 12
        if month != 0:
            pri_date[1] = month
        else:
            pri_date[0] -= 1
            pri_date[1] = 12

        pri_date[2] -= 1

        if pri_date[2] == 0:
            pri_date[1] -= 1
            pri_date[2] = 28
            if pri_date[1] == 0:
                pri_date[0] -= 1
                pri_date[1] = 12

        pri_date2 = int(''.join(
            str(pri_date[0]) + str(pri_date[1]).zfill(2) + str(pri_date[2]).zfill(2)))

        if pri_date2 < today_list:
            answer.append(i)
    return sorted(answer)

 

zfill(n)

n 자리수만큼 모자란 자리에는 0으로 채워준다

"2".zfill(3) # 002

 

월, 일이 한 자리수인 경우에도 YYYYMMDD의 형태를 위해 zfill 함수를 사용

 

rjust(n, 문자)

"2".rjust(3, "0") # 002
"2".rjust(3, "a") # aa2
"2000".rjust(4, "0") # 2000

 


 

한 줄로 쓰신 분들도 계셨다

 

def solution(today, terms, privacies):return [i+1 for i,x in enumerate(privacies) if {x[0]:int(today[:4])*12*28+int(today[5:7])*28+int(today[8:10])-(int(x[2:])*28) for x in terms}[x[11]] >= int(x[:4])*12*28+int(x[5:7])*28+int(x[8:10])]

 

def solution(today, terms, privacies):
    return [i + 1 for i in range(len(privacies)) if {i.split(' ')[0] : int(i.split(' ')[1]) * 28 for i in terms}[[i.split(' ')[1] for i in privacies][i]] <= [[int(today.split('.')[i]) - int(j.split(' ')[0].split('.')[i]) for i in range(3)][0] * 336 + [int(today.split('.')[i]) - int(j.split(' ')[0].split('.')[i]) for i in range(3)][1] * 28 + [int(today.split('.')[i]) - int(j.split(' ')[0].split('.')[i]) for i in range(3)][2] for j in privacies][i]]