[프로그래머스] 개인정보 수집 유효기간

rhkr9080·2023년 6월 18일
0

프로그래머스

목록 보기
1/19

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150370?language=python3

💻 문제 풀이 : Python

def solution(today, terms, privacies):
    answer = []
    term_dict = {term[0] : int(term[2:]) * 28 for term in terms}
#     print(term_dict) 
    
    today_list = list(map(int, today.split('.')))
    today_value = today_list[0] * 12 * 28 + today_list[1] * 28 + today_list[2]
#     # print(today_list)
    
    for idx in range(0, len(privacies)):
        case = privacies[idx]
        case_list = case.split(' ')
        case_date = list(map(int, case_list[0].split('.')))
        case_value = case_date[0]*12*28 + case_date[1]*28 + case_date[2]
        if case_value + term_dict[case_list[1]] <= today_value:
            answer.append(idx + 1)
    return answer

ref)

풀이참고 블로그 : https://computer-science-student.tistory.com/765
Dictionary : https://dojang.io/mod/page/view.php?id=2309


📌 memo

  • 문자열 인덱싱 : https://wikidocs.net/2838
    year = date[0:4]
    month = date[5:7]
    day = date[8:10]
  • 문자열 슬라이싱 : https://wikidocs.net/2839
    year, month, day = date.split('.')
  • 형변환 :
    string to int : int()
    int to string : str()
  • for문 형태 :
    for i in range(0, len(list)):
    for i in range list:
  • int형으로 slice후, 배열 만들기
my_list = list(map(int, my_str.split('.')))
  • list를 dictionary(hash)로 만들기
term_dict = {key : value for idx in list}

📌1차 시기 실패...

# 날짜 비교
def compare(list1, list2):
    for i in range(0, len(list1)):
        list1[i] = int(list1[i])
        list2[i] = int(list2[i])
    if(list1[0] > list2[0]):
        return 1
    elif (list1[0] == list2[0]) & (list1[1] > list2[1]):
        return 1
    elif (list1[0] == list2[0]) & (list1[1] == list2[1]) & (list1[2] >= list2[2]):
        return 1
    else:
        return 0

def solution(today, terms, privacies):
    answer = []
    for i in range(0, len(privacies)):
        privacy_list = privacies[i].split(' ')
        for j in range(0, len(terms)):
            term_list = terms[j].split(' ')
            if(privacy_list[1] == term_list[0]):
                date_list = privacy_list[0].split('.')
                date_list[1] = str(int(date_list[1]) + int(term_list[1]))
                # print(date_list[1])
                if(int(date_list[1]) > 12):
                    # print(date_list[1])
                    year = int(date_list[1]) // 12
                    month = int(date_list[1]) % 12
                    # print(year, month)
                    date_list[1] = str(int(month))
                    date_list[0] = str(int(date_list[0]) + year)
                # print(date_list)
                if compare(today.split('.'), date_list) == 1:
                    answer.append(i+1)
            
    return answer
profile
공부방

0개의 댓글