분류 전체보기 310

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

[프로그래머스] 숫자 변환하기 - Python

해당 문제는 bfs를 통해 문제를 해결하는 방식이다. bfs (Breadth-First Search)는 너비 우선 탐색으로 하나의 정점으로 부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것이다. 예를 들어, 특정 도시에서 다른 도시로 갈 수 있는지 없는지 판단할 때 사용할 수 있다. 시작 정점으로부터 가장 가까운 정점에 먼저 방문하고, 멀리 떨어져 있는 정점을 나중에 방문하는 방식으로, 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이를 사용한다. 해당 문제는 두 노드 즉, x, y 간의 최단 경로를 찾는 문제로 해석할 수 있다. def solution(x, y, n): answer = 0 s = set() s.add(x) while s: if y in s: return answe..

Python/Algorithm 2023.08.27

[프로그래머스] 뒤에 있는 큰 수 찾기 - Python

해당 문제는 배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 찾는 문제다. 처음에는 이중 for문으로 문제를 풀게 되는데, 이 방식으로 접근하면 시간 초과가 발생한다. def solution(numbers): results = [-1] * len(numbers) for idx in range(len(numbers)-1): values = numbers[idx] for j in numbers[idx+1:]: if values < j: results[idx] = j break return results 다른 풀이 방식은 Stack으로 문제를 푸는 것이다. stack은 먼저 -1로 된 빈 공간을 생성한다. 그런 다음, while문을 조건으로 달 수 있다. whi..

Python/Algorithm 2023.08.27

[프로그래머스] 주차 요금 계산 - 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
반응형