Programmers 21

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

[프로그래머스] 성격 유형 검사 - 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

[프로그래머스] 공원 산책 - Python

공원 산책과 같은 문제는 종종 코테에 나오는 것 같아서 리뷰를 할 예정이다. 구구절절 문제가 길어보지만, 조건문을 달아서 쉽게 풀이할 수 있다. 먼저, S, O, X로 된 입력 문장을 풀이하기 쉽게 숫자로 변환하는 과정이 필요하다. X는 1로 설정하고, S, O는 0으로 설정하면 아래와 같이 코딩할 수 있다. def solution(park, routes): nrow, ncol = len(park)-1, len(park[0])-1 coord = [] for i in range(nrow+1): rows = [] for j in range(ncol+1): idx = park[i][j] if idx == 'S': row, col = i, j rows.append(0) elif idx == 'X': rows.a..

Python/Algorithm 2023.08.24
반응형