Python 83

[프로그래머스] 둘만의 암호 - 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

해당 문제는 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

[프로그래머스] 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

해당 문제는 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 2에 해당하며, 다음과 같이 풀 수 있다. def solution(record): answer = [] user_list = {} for rec in record: v = rec.split() if v[0] in ['Enter', 'Change']: user_list[v[1]] = v[2] for rec in record: v = rec.split() if v[0] == 'Enter': answer.append(f'{user_list[v[1]]}님이 들어왔습니다.') elif v[0] == 'Leave': answer.append(f'{user_list[v[1]]}님이 나갔습니다.') retur..

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
반응형