Coolog 🖥️

/

[Coding Test] 개인정보 수집 유효기간 ⭐


🐳2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 ⭐ 코딩 테스트 문제를 풀고 정리한 글입니다 🐳

💫 문제 설명

매개변수

  • today : 오늘 날짜를 의미하는 문자열
    • today는 “YYYY.MM.DD” 형태로 오늘 날짜를 의미
  • terms : 약관의 유효기간을 담은 1차원 문자열 배열
    • 1 ≤ terms의 길이 ≤ 20
      • terms의 원소는 “약관 종류 유효기간” 형태의 약관 종류와 유효기간공백 하나로 구분한 문자열입니다.
      • 약관 종류는 A~Z중 알파벳 대문자 하나이며, terms 배열에서 약관 종류중복되지 않습니다.
      • 유효기간은 개인정보를 보관할 수 있는 달 수를 나타내는 정수이며, 1 이상 100 이하입니다.
  • privacies : 수집된 개인정보의 정보를 담은 1차원 문자열 배열
    • privacies[i]는 i+1번 개인정보의 수집 일자와 약관 종류를 나타냅니다.
    • privacies의 원소는 “날짜 약관 종류” 형태의 날짜와 약관 종류공백 하나로 구분한 문자열입니다.
    • 날짜는 “YYYY.MM.DD” 형태의 개인정보가 수집된 날짜를 나타내며, today 이전의 날짜만 주어집니다.
    • privacies의 약관 종류는 항상 terms에 나타난 약관 종류만 주어집니다.
  • today와 privacies에 등장하는 날짜의 YYYY는 연도, MM은 월, DD는 일을 나타내며 점(.) 하나로 구분되어 있습니다.
    • 2000 ≤ YYYY ≤ 2022
    • 1 ≤ MM ≤ 12
    • MM이 한 자릿수인 경우 앞에 0이 붙습니다.
    • 1 ≤ DD ≤ 28
    • DD가 한 자릿수인 경우 앞에 0이 붙습니다.
  • 파기해야 할 개인정보가 하나 이상 존재하는 입력만 주어집니다.

→ 파기해야 할 개인정보의 번호를 오름차순으로 1차원 정수 배열에 담아 return 하도록 solution 함수를 완성


약관종류 유효기간
A 6 달
B 12 달
C 3달
번호 개인정보 수집 일자 약관 종류 유효 날짜
1 2021.05.02 A 2021.11.01
2 2021.07.01 B 2022.06.28
3 2022.02.19 C 2022.05.18
4 2022.02.20 C 2022.05.19

오늘 날짜가 2022.05.19 일 때,

  1. A약관 – 2021.05.02 → 2021.11.01 까지 보관 가능, 유효 기간 지남 ✔️
  2. B약관 – 2021.07.01 → 2022.06.28 까지 보관 가능
  3. C약관 – 2022.02.19 → 2022.05.18 까지 보관 가능, 유효 기간 지남 ✔️
  4. C약관 – 2022.02.20 → 2022.05.19 까지 보관 가능

→ 파기해야 할 개인정보 번호는 [1, 3]

💫 코드

def solution(today, terms, privacies):
    arr = privacies
    date = {}
    answer = []

    for term in terms:
        a, b = term.split(' ')
        date[a] = int(b)

    for p in privacies:
        a, b = p.split(' ')
        c, d, f = map(int, a.split('.'))
        f -= 1
        c += date[b] // 12
        d += date[b] % 12
        if f <= 0:
            f = 28
            d -= 1
        if d > 12:
            c += 1
            d -= 12
        x = str(c)+'.'+str(d).zfill(2)+'.'+str(f).zfill(2)
        if x < today:
            for i in range(len(arr)):
                if arr[i] == p:
                    answer.append(i+1)
                    arr[i] = None
                    break

    answer.sort()
    return answer

정말 왜 틀리는건지 몰랐었는데 간과한것이 있었다.

privacies중복이 될수도 있었는데, 딕셔너리를 이용해 풀다 보니 오답이 나왔었다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최근 게시물