코딩 테스트 19

[프로그래머스] 둘만의 암호 - Python

해당 문제는 프로그래머스 기준 Level 1에 해당하는 문제로 쉽게 해결할 수 있는 문제다. 문제의 핵심을 간략하게 살펴보면, skip에 해당하는 단어는 넘어가고, 단어가 있는 곳에서 index 만큼 떨어진 알파벳으로 변환하면 끝이다. def solution(s, skip, index): answer = '' alphabet = 'abcdefghijklmnopqrstuvwxyz' for sk in skip: alphabet = alphabet.replace(sk, '') for a in s: idx = (alphabet.index(a) + index ) % len(alphabet) answer += alphabet[idx] return answer 먼저, skip에 해당하는 단어를 replace한다. 그..

Python/Algorithm 2023.09.08

[프로그래머스] 대충 만든 자판 - Python

해당 문제는 프로그래머스 기준 Level 1에 해당하는 문제다. 풀이는 2중 for문을 통해서 먼저 딕셔너리를 생성한다. 이때 자판 패드가 가장 가까운 번호를 기준으로 key와 value를 지정하면 된다. from collections import defaultdict def solution(keymap, targets): answer = [] inform = defaultdict(list) for key in keymap: for i, k in enumerate(key): if inform[k] == []: inform[k] = i+1 elif inform[k] != [] and (i+1) < inform[k]: inform[k] = i+1 for target in targets: values = 0 ..

Python/Algorithm 2023.09.08

[프로그래머스] 두 큐 합 같게 만들기 - 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

[프로그래머스] 1차 다트 게임 - Python

해당 문제는 2018 KAKAO BLIND RECRUITMENT 에서 출제된 문제다. 프로그래머스 기준 Level 1에 해당한다. 다트를 던질 때 Single Double Triple 등을 유의하며, *, #에 해당하는 값도 처리하는 것이 관건이다. 첫 번째 풀이로 접근했을 때, 80% 정도 정답이 나왔다. def calculate(num, oper): if oper == 'S': return num ** 1 elif oper == 'D': return num ** 2 elif oper == 'T': return num ** 3 def solution(dartResult): score = [] for dr in dartResult: if dr.isnumeric(): n = int(dr) elif dr i..

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

이번 문제는 2023 KAKAO BLIND RECRUITMENT 에서 출제된 문제다. 프로그래머스 기준 난이도 Level 2에 해당하는 문제로, 완전탐색(Brute-Force Search, BFS) 문제로 접근할 수 있다. 문제 설명 요약을 하자면, 카카오톡 이모티콘 플러스 서비스 가입자 수를 최대로 늘리는 것이 첫 번째 목적이고, 이모티콘 판매액을 최대한 늘리는 것이 두 번째 목적이다. n명의 카카오톡 사용자에게 m개의 이모티콘을 할인해서 판매하는데, 이때 할인율은 10%, 20%, 30%, 40% 중 하나로 설정된다. 각 할인율에 따라 목적1, 목적2를 달성하는 값을 출력하는 문제다. from itertools import product def solution(users, emoticons): emg..

Python/Algorithm 2023.09.02

[프로그래머스] 신고 결과 받기 - 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

이번 문제는 2020년 카카오 인턴 코딩 테스트에 나온 문제다. num2key는 번호를 누르면 해당 좌표로 변환하는 코드를 의미한다. 1~9까지는 수식으로 정의하였고, 0의 경우 (3,1) 좌표를 리턴하는 형태로 지정했다. [1, 4, 7]에 해당하는 키패드는 왼손으로 먼저 클릭하고, [3, 6, 9]에 해당하는 키패드는 오른손으로 먼저 클릭해야 하기 때문에, [2, 5, 8, 0]에 해당하는 값만 잘 설정하면 된다. [2, 5, 8, 0]에서는 왼손과 오른손의 현재 위치에 따라 달리 클릭되기 때문에 클릭될 때마다 좌표값을 받아서 왼손 혹은 오른손의 좌표를 기억하고, 만약 같은 경우 두 값의 차이를 바탕으로 어느 손으로 클릭할 지 처리할 수 있다. 만약 두 값의 차이가 같다면, 왼손 잡이인지 오른손 잡이..

Python/Algorithm 2023.08.24

[프로그래머스] 성격 유형 검사 - Python

해당 문제는 2022년 카카오 코딩 테스트에 나온 문제다. 내가 접근한 방식은 먼저 각 index를 저장하는 리스트와 딕셔너리를 생성하고, survey를 입력으로 받아서 분류하는 형태로 진행하였다. def solution(survey, choices): types = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'] answers = [0] * len(types) results = {t:i for i, t in enumerate(types)} for s, value in zip(survey, choices): a, b = s if value >= 4: answers[results[b]] += value - 4 else: answers[results[a]] += 4 - value o..

Python/Algorithm 2023.08.24
반응형