jujuwon
시크릿주주
jujuwon
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • 🔠 프로그래밍언어 (35)
      • ☕️ Java (19)
      • 🐠 Python (15)
      • 🍠 Kotlin (1)
    • 🔙 Backend (16)
      • 🌿 Springboot (12)
      • 🐳 Docker (1)
      • ☁️ AWS (3)
    • 💼 CS (12)
      • 📶 Network (12)
    • 🕹 알고리즘 (14)
      • 📑 스터디 (2)
      • 💁🏻‍♂️ 백준 (9)
      • 👨🏼‍🔬 프로그래머스 (3)
    • 📚 Book (8)
      • 🔎 오브젝트 (4)
      • 🧪 TDD (2)
      • 📜 논문 (2)
    • 🔐 보안 (7)
      • 👾 Pwnable (7)
    • 📝 회고 (4)
    • 🧩 etc. (10)
      • ⚠️ issue (2)
      • 💡 꿀팁 (7)
      • ✏️ 끄적 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.
jujuwon

시크릿주주

프로그래머스 :: 개인정보 수집 유효기간 (Python)
🕹 알고리즘/👨🏼‍🔬 프로그래머스

프로그래머스 :: 개인정보 수집 유효기간 (Python)

2023. 6. 28. 21:24
반응형

문제 링크

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

 

프로그래머스

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

programmers.co.kr

접근 방식

문제는 2023 카카오 공채 1번 문제.

문제에서 개인정보를 수집한 날짜와 약관별 개인정보 보관 가능기간을 준다.

주어진 오늘날짜와 비교해서 파기해야 하는 개인정보 번호를 출력하는 문제.

“날짜 문제는 단위를 통일해서 풀어라” - 내가 좋아하는 개발자의 명언.

그 말 그대로 년,월,일 포맷으로 되어 있는 날짜정보를 일수로 통일하면 바로 풀리는 문제다.

모든 달이 28일이므로 연,월,일이 있으면 “(연 x 12달 x 28일) + (월 x 28일) + 일” 을 계산해서

“일” 로 통일한 후 비교하면 쉽다.

풀이 코드

def timeToDay(day):
    y, m, d = map(int, day.split('.'))
    return y * 12 * 28 + m * 28 + d


def solution(today, terms, privacies):
    answer = []
    term = {}
    today = timeToDay(today)

    for t in terms:
        x, y = t.split()
        term[x] = int(y)

    for idx, p in enumerate(privacies):
        start_day, kind = p.split()
        if timeToDay(start_day) + term[kind] * 28 <= today:
            answer.append(idx+1)

    return answer

끝.

728x90
반응형
저작자표시 (새창열림)
    '🕹 알고리즘/👨🏼‍🔬 프로그래머스' 카테고리의 다른 글
    • 프로그래머스 :: 보석 쇼핑 (Python)
    • 프로그래머스 :: 두 큐 합 같게 만들기 (Python)
    jujuwon
    jujuwon

    티스토리툴바