Python/Programmers
-
[프로그래머스] 당구 연습 LV2Python/Programmers 2024. 2. 23. 23:39
1) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2)알고리즘 - 한마디로 표현하면 '대칭이동을 활용한 최단거리 구하기' # 문제를 풀고 정리하다가 깨달았다.(참고) - 몇몇 상황을 제외한 상황(즉 한쪽 축이 같은 좌표값을 갖는 경우) 모두 4개의 벽 중 가장 최단거리 구하기 # 문제를 풀고 정리하다가 3) 코드 def solution(m, n, startX, startY, balls): answer = [] for n_x, n_y in balls: if startX == n_x: if n_y > startY : answer.append(min((..
-
[프로그래머스] 광물 캐기 LV2Python/Programmers 2024. 2. 7. 14:32
문제) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘) 1. 총 곡갱이 수와 광물을 5개씩 분할(b_split 함수) #추가적으로 총 곡갱이 수로 수확가능한 광물까지 가지치기 2. 수확 가능범위 안에 있는 광물등급 갯수 확인 3. 내림차순으로 피로도가 가장 요구되는 구역을 다이아 -> 철 -> 돌 곡갱이 순으로 캐기 4. 총 피로도 누적합 출력 코드) def solution(picks, minerals): result = 0 total_p = sum(picks) bowl = b_split(minerals, total_p) bill = [] for..
-
[프로그래머스] 숫자 카드 나누기 LV2Python/Programmers 2023. 8. 8. 22:46
문제) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘) 1. 각 리스트의 최대 공약수를 구하기(math.gcd 함수) 2. 각각 구한 최대 공약수로 서로의 숫자카드를 나눠 조건에 해당하는지 판단 3. 조건에 만족시 가장 큰 수 max 출력 그 외 0 출력 * 유클리디안 알고리즘(최대 공약수 구하기) - 두 수 U, V가 있을 때 (U > V) 최대 공약수 구하기 - U - V와 V의 최대 공약수는 동일하며 해당 과정을 통해 U와 0이 될 때 최대공약수는 U가 된다. 1. U < V 라면 두수 U, V를 바꾼다. 2. U = U - V 3. U가 ..
-
[프로그래머스] 미로 탈출 LV2Python/Programmers 2023. 2. 19. 22:06
문제) 알고리즘) - BFS(너비우선탐색) - 두번의 BFS를 활용해서 문제를 해결함 - 첫번째 BFS는 "S"부터 출발해서 "L"를 목적지로 수행 - 두번째 BFS는 "L"부터 출발해서 "E"를 목적지로 수행 -이를 수행하는동안 이동한 횟수 출력 코드) from collections import deque def solution(maps): a = bfs("S", "L", maps) b = bfs("L", "E", maps) if a == -1 or b == -1: return -1 else: return a+b def bfs(start, end, maps): n, m = len(maps), len(maps[0]) m_y = [1, 0, -1, 0] m_x = [0, 1, 0, -1] n, m = le..
-
[프로그래머스] 호텔 대실 LV2Python/Programmers 2023. 2. 19. 20:42
문제) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘) -그리디 알고리즘 코드) from heapq import heappop, heappush def solution(book_time): temp = [] cnt = 0 chk_list = [(int(s[:2])*60 + int(s[3:]), int(e[:2])*60 + int(e[3:])) for s,e in book_time] chk_list.sort() for s,e in chk_list: if not(temp): cnt += 1 heappush(temp, e) continue if tem..