2023 KAKAO BLIND RECRUITMENT 문제 풀이

2023. 6. 30. 12:12·IT/코딩테스트

초고

일시: 2023년 6월 29일 15:20~17:00
문제: 프로그래머스 기출문제 모음
사용 언어: Python3
결과: 2 정답 / 7 문제

 

2023 현대모비스 알고리즘 경진대회를 대비하고자, 2023 카카오 채용 코딩테스트 기출 문제를 풀었다. 프로그래머스에 카카오 기출문제가 잘 정리되어 있다. 카카오 코딩테스트는 입력을 변수로 넘겨주기 때문에 입력에 대해서는 신경쓸 필요가 없다. 대신 데이터를 쓰기 쉽게 전처리를 할 필요가 있다.

 

1. 개인정보 수집 유효기간

def check_day(today, prev, s):
    today = today.split('.')
    year1 = int(today[0])
    month1 = int(today[1])
    day1 = int(today[2])

    prev = prev.split('.')
    year2 = int(prev[0])
    month2 = int(prev[1])
    day2 = int(prev[2])

    result1 = year1 * 12 * 28 + month1 * 28 + day1
    result2 = year2 * 12 * 28 + month2 * 28 + day2

    return True if result1 >= result2 + s * 28 else False

def solution(today, terms, privacies):
    answer = []

    db = dict()
    for term in terms:
        k, v = term.split()
        db[k] = int(v)

    info_db = []
    for privacie in privacies:
        k, v = privacie.split()
        info_db.append((k, v))

    for idx, info in enumerate(info_db):
        if check_day(today, info[0], db[info[1]]):
            answer.append(idx+1)

    return answer
  • 프로그래머스 난이도 1
  • 지문이 길어서 읽기 싫고 어려울 것 같지만, 쉽다
  • 문자열로 입력된 날짜를 비교해주면 된다.
  • 이모티콘 타입 정보를 O(1)에 탐색할 수 있도록 dictionary로 바꿔준다.
  • Python에는 Date 타입이 존재하지만, 문자열로 처리하는 편이 훨씬 간단하다.
  • 문자 '.'을 기준으로 split을 수행하고 각 데이터 요소를 int로 바꿔준다.
  • 계산의 편의를 위해 Year, Month, Date를 모두 더한다.
    • 유효기간을 더한 후, 파기 여부를 확인한다.

 

2. 이모티콘 할인행사

from itertools import product

def solution(users, emoticons):
    answer = [0, 0]
    temp = min(users)[0]
    if temp % 10 > 0:
        temp = (temp // 10 + 1) * 10

    n = len(emoticons)
    lsts = list(product(list(range(temp, 50, 10)), repeat=n))

    for lst in lsts:
        answer_temp = [0, 0]
        for flag, limit in users:
            result = 0
            for i in range(n):
                if lst[i] >= flag:
                    result += (emoticons[i] * (100 - lst[i])) // 100
            if result >= limit:
                answer_temp[0] += 1
            else:
                answer_temp[1] += result

        if answer[0] < answer_temp[0] or (answer[0] == answer_temp[0] and answer[1] < answer_temp[1]):
            answer = answer_temp[:]
    return answer
  • 프로그래머스 난이도 2
  • 지문이 길고 이해하기도 힘들다. 그래도 문제만 이해하면 푸는 것은 어렵지 않은 편이다.
  • 각 이모티콘 별 할인율에 대해 완전탐색을 돌면 된다.
    • 이모티콘의 개수가 m <= 7이기 때문에 완전탐색 시, 최대 4^7번까지 돌기 때문에 완전탐색으로 해결할 수 있다!
  • 나는 product 함수를 사용해서 완전탐색 조합을 구했지만 재귀로도 풀 수 있다.
    • 이모티콘 할인 행사 재귀 풀이법

'IT > 코딩테스트' 카테고리의 다른 글

[JS] 코딩테스트 문법(1)  (0) 2023.09.04
2023 현대모비스 대비 기출 모의 코딩테스트  (0) 2023.06.28
'IT/코딩테스트' 카테고리의 다른 글
  • [JS] 코딩테스트 문법(1)
  • 2023 현대모비스 대비 기출 모의 코딩테스트
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (572)
      • 혼잣말 (87)
      • TIL (2)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (167)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (38)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    Pint OS
    블록체인
    크래프톤정글
    사이드프로젝트
    numpy
    니어프로토콜
    해커톤
    핀토스
    자바스크립트
    코드프레소
    리액트
    위상정렬
    졸업과제
    딥러닝
    pintos
    MailBadara
    글리치해커톤
    RNN
    프로그래머스
    JavaScript
    NEAR Protocol
    부산대
    머신러닝
    react
    Flutter
    파이썬
    알고리즘
    OS
    나만무
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
2023 KAKAO BLIND RECRUITMENT 문제 풀이
상단으로

티스토리툴바