카카오 코딩 테스트 7

[프로그래머스] 메뉴 리뉴얼 - Python

해당 문제는 2021 KAKAO BLIND RECRUITMENT에서 출제된 문제다. 프로그래머스 기준 Level 2에 해당한다. 이번 문제는 combinations 함수와 Counter 함수를 사용하면 쉽게 해결이 가능하다. from itertools import combinations from collections import Counter def solution(orders, course): answer = [] for n in course: candidates = [] for menu in orders: for l in combinations(menu, n): candidates.append(''.join(sorted(l))) candidates = Counter(candidates).most_co..

Python/Algorithm 2023.09.05

[프로그래머스] 두 큐 합 같게 만들기 - Python

해당 문제는 2022 KAKAO TECH INTERNSHIP에 출제된 문제다. 프로그래머스 기준 Level 2에 해당한다. Queue를 통해 푸는 문제로 collections 내 queue를 사용하면 된다. from collections import deque def solution(queue1, queue2): answer = 0 q1 = deque(queue1) q2 = deque(queue2) _max = (len(queue1)) * 3 t1 = sum(q1) t2 = sum(q2) total = t1 + t2 if total % 2 != 0: return -1 queue에서는 popleft라는 함수가 있어서, 왼쪽에 있는 값을 빼는 형태로 진행한다. 문제에서 조건 자체가 왼쪽에 있는 값을 차례대로..

Python/Algorithm 2023.09.05

[프로그래머스] 비밀지도 - Python

해당 문제는 2018 KAKAO BLIND RECRUITMENT에서 출제된 문제다. 프로그래머스 기준 Lvel 1에 해당하는 문제로 10진법을 2진법으로 변환하여 해결할 수 있다. def GetMap(arr1, arr2): answer = '' for a1, a2 in zip(arr1, arr2): if a1 == '0' and a2 == '0': answer += ' ' else: answer += '#' return answer def solution(n, arr1, arr2): answer = [] array1, array2 = [], [] for a1, a2 in zip(arr1, arr2): a1 = bin(a1)[2:].rjust(n, '0') a2 = bin(a2)[2:].rjust(n, '..

Python/Algorithm 2023.09.03

[프로그래머스] 실패율 - Python

이번 문제는 2019 KAKAO BLIND RECRUITMENT 에서 출제된 문제다. 프로그래머스 기준 Level 1에 해당하는 문제로, 쉽게 풀 수 있다. def solution(N, stages): results = {} length = len(stages) for n in range(1, N+1): if length != 0 : count = stages.count(n) results[n] = count / length length -= count else: results[n] = 0 return sorted(results, key=lambda x: results[x], reverse=True) 각 스테이지별 실패율을 표시하고, 실패율이 일치하는 경우 스테이지가 낮은 순서대로 정렬하면 된다. 스테이..

Python/Algorithm 2023.09.02

[프로그래머스] 주차 요금 계산 - Python

2022 KAKAO BLIND RECRUITMENT 에서 출제된 문제로, 규칙을 지정하여 푸는 방식이다. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입출력 예 fees = [180, 5000, 10, 600] records = ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0..

Python/Algorithm 2023.08.25

[프로그래머스] 신고 결과 받기 - Python

해당 문제는 2022 KAKAO BLIND RECRUITMENT 에서 출제된 문제다. 마지막 출력되는 값은 유저가 신고한 유저 중 몇 명이 정지 되었는지에 대한 값을 반환한다. 한 유저가 동일한 유저에게 여러번 신고한 경우에는 모두 한 번으로 처리하고, K개의 임계값(Threshold)이 주어진다. def solution(id_list, report, k): froud_by = dict({key:[] for key in id_list}) counts = dict({key:0 for key in id_list}) idx_info = dict({key:i for i, key in enumerate(id_list)}) answers = [0] * len(id_list) for val in report: src..

Python/Algorithm 2023.08.24

[프로그래머스] 크레인 인형뽑기 게임 - Python

크레인 인형뽑기 게임 문제는 2019 카카오 개발자 겨울 인턴십에 나온 문제다. 크레인에서 인형을 뽑아 새로운 칸에 집어놓고 순서대로 일치되면 제거하고, 제거된 인형의 갯수를 출력하는 문제다 def solution(board, moves): nrow, ncol = len(board), len(board[0]) answer = [] counts = 0 for m in moves: for i in range(nrow): if board[i][m-1]: answer.append(board[i][m-1]) board[i][m-1] = 0 break if len(answer) > 1: if answer[-2] == answer[-1]: answer = answer[:-2] counts += 2 return cou..

Python/Algorithm 2023.08.24
반응형