본문 바로가기

알고리즘/카카오 EASY

(29)
수식 최대화 (Level 2) 문제 https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 내 풀이 permutations를 사용해서 (+, -, *)로 만들 수 있는 모든 우선순위 조합인 9가지 경우의 수를 구하였다. 그리고 수식에서 숫자와 연산자를 분리하여 리스트에 넣었다. ex) ['100', '+', '200', '-', '50', '*', '2'] 9가지 우선순위 조합에 해당하는 연산 값을 각각 구하였다. 값을 구할 때 stack을 사..
거리두기 확인하기 (Level 2) 문제 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 내 풀이 대기실에서 'P'의 좌표를 따로 저장한다. 'P' 간의 거리를 구하기 위해 ..
뉴스 클러스터링 (Level 2) 문제 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 내 풀이 먼저 str1과 str2의 다중집합을 만든다. isalpha() 함수로 영문자만 포함하도록 하였다. Counter를 사용하여 다중집합의 구성을 파악하였다. 교집합은 다중집합 한 개를 선택하고 그 다중집합의 모든 원소를 돌게 하여 구하였다. 합집합은 중졸이면 다 아는 n(A∪B) = n(A) + n(B) - n(A∩B) 공식을 ..
실패율 (Level 1) 문제 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 내 풀이 Counter 함수를 써서 각 스테이지에 몇 명이 머물러 있는지 구하였다. (현재 스테이지에 도달한 플레이어 수 = 전 단계 스테이지에 도달한 플레이어 수 - 전 단계에 실패한 플레이어의 수) 공식을 사용하였다. 스테이지에 도달한 유저가 없는 경우를 위해 예외 처리를 하였다. from collections import Counter def solu..
괄호 변환 (Level 2) 문제 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 내 풀이 그냥 문제에서 하라는 대로 했다. # 올바른 문자열인지 확인하는 함수 def is_correct(p): cnt = 0 for a in p: if a == '(': cnt += 1 else: cnt -=1 if cnt < 0: return False if cnt == 0: return True else: return False # 균형잡힌 문자열을 u..
메뉴 리뉴얼 (Level 2) 문제 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 내 풀이 orders를 돌면서 order 안에서 c개의 조합으로 만들 수 있는 모든 경우를 combinations를 사용해서 구하였다. course를 돌 때마다 딕셔너리를 만들어서 조합이 몇 개 나왔는지 카운트를 세고, MAX에 카운트가 가장 많은 것을 저장한다. 딕셔너리를 돌면서 MAX와 같은 숫자만큼 카운트를 가진 원소를 answer에 저장한다. from..
크레인 인형뽑기 게임 (Level 1) 문제 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 내 풀이 moves는 board에 접근할 (column index + 1)이다. moves를 돌면서 board의 column에 접근하여 가장 위에 있는 숫자를 bucket에 넣었다. bucket이 빈 공간이 될 때까지, bucket의 원소를 stack에 넣었다. bucket에서 뺀 인형이 stack의 마지막 원소와 동일하면 stack에서 pop을 하였다. pop을 할 때 answer..
키패드 누르기 (Level 1) 내 풀이 키 패드 숫자를 미리 딕셔너리에 저장했다. n이 키패드 오른쪽에 위치하는 숫자는 오른손, 키패드 왼쪽에 위치하는 숫자는 왼손으로 누르도록 했다. 숫자를 누를 때마다 손의 위치를 업데이트시켰다. n이 키패드 중앙에 위치하는 숫자일 경우, 맨해튼 거리를 구하고 손의 위치를 업데이트시켰다. def solution(numbers, hand): answer = '' dic = {1: [0, 0], 2: [0, 1], 3: [0, 2], 4: [1, 0], 5: [1, 1], 6: [1, 2], 7: [2, 0], 8: [2, 1], 9: [2, 2], 0: [3, 1]} left, right = [3, 0], [3, 2] for n in numbers: if n in [3, 6, 9]: right = d..