백준 / 물병 / 1052번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 물병 / 1052번 (골드 5단계)문제 사이트: https://www.acmicpc.net/problem/1052 문제 설명 나의 풀이# 문제의 핵심:# 1: 물병을 k개 이내로 만들어야한다.# 2: 물병에서 다른 물병으로 이동할 때는 같은 양의 물이 있어야 가능하다.# 3: 모든 물병은 1L를 가진채 시작한다.# 핵심 로직:# 문제를 자세히 살펴보면 총 물의 양은 2, 4, 6, 8, ... 2^n# 2의 제곱으로 증가한다 이걸 2진수로 나타내서 2진수에 존재하는 1의 개수가 k개 이내로 존재하면# 물병을 만들 수 있게 된다.# 물병을 구하는 함수def solution(n, k): # 최소한으로 들어간 물병의 개수 answer = 0 whil..
백준 / AC / 5430번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: AC / 5430번 (골드 5단계)문제 사이트: https://www.acmicpc.net/problem/5430 문제 설명 나의 풀이from collections import deque# 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다.# AC는 정수 배열에 연산을 하기 위해 만든 언어이다.# 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.def ac(current_function, n, arr): reverse_flag = False # 뒤집기 여부를 저장하는 플래그 dq = deque(arr) for p in current_function: if p == 'R': rever..
백준 / 연산자 끼워넣기 / 14888번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 연산자 끼워넣기 / 14888번 (실버 1단계)문제 사이트: https://www.acmicpc.net/problem/14888 문제 설명 나의 풀이INF = 1000000001def dfs(numbers, sign_word, n, count, current_result, used, answer): if count == n - 1: # 모든 연산자를 사용했으면 최댓값, 최솟값 갱신 answer[0] = max(current_result, answer[0]) answer[1] = min(current_result, answer[1]) return for i in range(n - 1): if not ..
백준 / 특정한 최단 경로 / 1504번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 특정한 최단 경로 / 1504번 (골 4단계)문제 사이트: https://www.acmicpc.net/problem/1504 문제 설명 나의 풀이import heapqfrom collections import defaultdictINF = 1e8def dijkstra(start, n, graph): """다익스트라 알고리즘을 사용해 start에서 모든 노드까지 최단 경로 계산""" distances = [INF] * (n + 1) distances[start] = 0 pq = [(0, start)] # (현재 거리, 현재 노드) while pq: current_distance, current_node = heapq.he..
백준 / 01타일 / 1904번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 01타일 / 1904번 (실버 3단계)문제 사이트: https://www.acmicpc.net/problem/1904 문제 설명 나의 풀이def solution(n): if n == 1: return 1 elif n == 2: return 2 # dp[N] = dp[N-1] + dp[N-2], % 15746 prev2 = 1 # dp[1] prev1 = 2 # dp[2] for i in range(3, n + 1): current = (prev1 + prev2) % 15746 prev2 = prev1 prev1 = current return prev1if _..
백준 / 감시 / 15683번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 감시 / 15683번 (골드 3단계)문제 사이트: https://www.acmicpc.net/problem/15683 문제 설명 나의 풀이# 깊은 복사import copy# CCTV별 감시 방향 정의 (상, 하, 좌, 우)directions = { 1: [[(0, 1)], [(0, -1)], [(1, 0)], [(-1, 0)]], # 단방향 2: [[(0, 1), (0, -1)], [(1, 0), (-1, 0)]], # 양방향 3: [[(-1, 0), (0, 1)], [(0, 1), (1, 0)], [(1, 0), (0, -1)], [(0, -1), (-1, 0)]], # 직각 방향 4: [[(-1, 0), (0, 1), (0, -1..
백준 / 생일수 I / 11883번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 생일수 I / 11883번 (골드 3단계)문제 사이트: https://www.acmicpc.net/problem/11883 문제 설명 나의 풀이def main(): import sys input = sys.stdin.read data = input().split() sz = 10**6 + 5 dp = [[0, float('inf')] for _ in range(sz)] dp[0] = [0, 0] # [숫자 구성 값, 자리수 합] # DP 배열 채우기 for i in range(sz): if dp[i][0] == 0 and i != 0: continue for digit i..
백준 / 소트인사이드 / 1427번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 소트인사이드 / 1427번 (실버 5단계)문제 사이트: https://www.acmicpc.net/problem/1427 문제 설명 나의 풀이if __name__ == "__main__": # 숫자를 입력 word = input() # str를 int 리스트로 변경 num = list(map(int, str(word))) # 내림차순으로 변경 num.sort(reverse = True) # 결과 값을 출력하는 for문 for i in num: print(i, end = '')※ 알아야 할 것# 숫자를 입력 word = input() # str를 int 리스트로 변경 num = list(ma..
백준 / 덩치 / 7568번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 덩치 / 7568번 (실버 5단계)문제 사이트: https://www.acmicpc.net/problem/7568 문제 설명 나의 풀이def solution(s): # 결과 result = [] # 길이 len_s = len(s) for i in range(len_s): # 스코어 score = 1 # 현재 당사자의 몸무게, 키 current_weight, current_height = s[i] for j in range(len_s): d_weight, d_height = s[j] # 자신이 아닌 다른 후보가 나와야함 ..
백준 / 트리 / 1068번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 트리 / 1068번 (골드 5단계)문제 사이트: https://www.acmicpc.net/problem/1068 문제 설명 나의 풀이def make_graph(nodes, len_n, delete): # 노드를 이용해서 그래프로 변환한다. graph = [[] for _ in range(len_n)] # 방문한 곳은 다시 방문하지 않도록 처리 visit = [False] * len_n # 삭제될 노드는 방문하지 않는다. visit[delete] = True # 시작 노드를 결정 root = -1 # answer 전역 변수 global answer for i in range(len_n): ..
백준 / 저울 / 2437번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 저울 / 2437번 (골드 2단계)문제 사이트: https://www.acmicpc.net/problem/2437 문제 설명 나의 풀이def solution(weights, len_n): # 무게 추를 오름차순으로 정렬 weights.sort() # 만들 수 있는 최대 범위 max_range = 0 for weight in weights: # 다음 무게 추가 현재 범위 + 1보다 크다면, 그 값은 만들 수 없다. if weight > max_range + 1: break # 범위를 확장 max_range += weight # 만들 수 없는 최소값 반환 r..
백준 / 구슬 탈출 2 / 13460번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 구슬 탈출 2 / 13460번 (골 1단계)문제 사이트: https://www.acmicpc.net/problem/13460 문제 설명 나의 풀이코드가 조금 길어서 핵심 코드를 부분적으로 설명하겠습니다.# BFS 초기화 (큐에 (red_x, red_y, blue_x, blue_y, 이동 횟수)) queue = deque([(red_x, red_y, blue_x, blue_y, 0)]) visited = set() visited.add((red_x, red_y, blue_x, blue_y))파란 공과 빨간 공을 동시에 움직여서 goal지점에 누가 먼저 도착하는지 확인을 하려고 했습니다.# 공이 벽이나 구멍에 닿을 때까지 이동시키는 함수def mo..
김치바보
'분류 전체보기' 카테고리의 글 목록