본문 바로가기

분류 전체보기

(120)
[백준] 2156번 : 포도주 시식 (Python) 문제 : https://www.acmicpc.net/problem/2156 n개의 포도주 잔과 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때,가장 많은 양의 포도주를 마실 수 있게 구하는 문제.import sysinput = sys.stdin.readlineN = int(input()) # 포도주 개수wine = [0]*(N+1)dp = [0]*(N+1)# 포도주 입력받기for i in range(1, N+1): wine[i] = (int(input())) # 입력받은 포도주를 추가# 최대로 마실 수 있는 포도주의 양 출력dp[1] = wine[1]if(N >= 2): dp[2] = wine[1] + wine[2]for i in range(3, N+1): # 1. 현재 잔 선..
[백준] 1463번 : 1로 만들기 (Python) 문제 : https://www.acmicpc.net/problem/1463 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 사용해 1을 만드는 연산의 최솟값을 구하는 문제. import sysinput = sys.stdin.readlineN = int(input()) # 구하고자 하는 수D = [0 for j in range(N+1)] # DP 리스트D[1] = 0 # 1일 때 연산 불필요 # 조합 점화식으로 DP 테이블 채워넣기for i in range(2, N+1): D[i] = D[i-1]+1 # -1 연산 표현 if(i%2==0): # if 2의 배수 ..
[백준] 1197번 : 최소 스패닝 트리 (Python) 문제 : https://www.acmicpc.net/problem/1197 주어진 그래프의 최소 스패닝 트리를 구하는 문제다.최소 스패닝 트리는, 주어진 그래프의 모든 정점들을 연결하는 가중치의 합이 최소인 트리를 말한다. import sysimport heapqsys.setrecursionlimit(10**6) # 재귀 깊이 제한 1,000,000으로 늘림input = sys.stdin.readlineV, E = map(int, input().strip().split()) # 노드 수, 에지 수pq = []parent = [i for i in range(V + 1)] # 대표 노드 저장 리스트# 우선순위 큐에 에지 정보 저장for i in range(E): s, e, v = map(int, ..
[백준] 11653번 : 소인수분해 (Python) 문제 : https://www.acmicpc.net/problem/11653 정수 N을 소인수분해하는 문제.import sysinput = sys.stdin.readline# 분해def divide(N, div): while(N%div==0): # 나누어떨어질 시 반복 print(div) N /= div # N을 i로 나누기 return N# 소수 찾기def prime(N): for i in range(2, N+1): if(N%i==0): # N을 분해할 수 있는 소수이면 N = divide(N, i) # 찾은 소수로 분해 if(i >= N): # i가 현재 분..
[백준] 11576번 : Base Conversion (Python) 문제 : https://www.acmicpc.net/problem/11576 A진법의 수를 B진법으로 변환하는 문제.import sysinput = sys.stdin.readline# 진법 변환기# 10진법을 B진법으로!def radix_to_b(N, B): tf = '' while(N > 0): tf = str(N%B)+ ' ' + tf # 나머지 숫자랑 매칭해서 N = (N//B) # B로 나눈 몫을 구함 return tf.strip() # 역순으로 return# 진법 변환기# A진법을 10진법으로!def radix_to_10(A, case): num = 0 loc = 0 for i i..
[백준] 2745번 : 진법 변환 (Python) 문제 : https://www.acmicpc.net/problem/2745 B진법 수 N을 10진법으로 변환하는 문제.import sysinput = sys.stdin.readline# 진법 변환기def radix(N, B): match_ = { '0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, 'H': 17, 'I': 18, 'J': 19, 'K': 20, 'L': 21, 'M': 22, 'N': 23, 'O': 24, 'P': 25, 'Q..
[백준] 11005번 : 진법 변환 2 (Python) 문제 : https://www.acmicpc.net/problem/11005 10진수 N과 진법의 수 B를 받아, N을 B진법으로 바꿔 출력하는 문제다.이때, 숫자 10을 넘어가는 숫자는 대문자를 사용해 표시한다.import sysimport mathinput = sys.stdin.readline# 진법 변환기def radix(N, B): match_ = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' tf = '' while(N > 0): tf += match_[N%B] # 나머지 숫자랑 알파벳이랑 매칭해서 N = (N//B) # B로 나눈 몫을 구함 return tf[::-1] # ..
[백준] 2089번 : -2진수 (Python) 문제 : https://www.acmicpc.net/problem/2089 10진법의 수를 하나 입력 받아서 -2진수를 구하는 문제.import sysimport math#input = sys.stdin.readlineN = int(input())def minus_bin(N): mbin = '' if(N == 0): # 0일 땐 0! return 0; while(N != 1): mbin += str(abs(N%-2)) # 나머지를 더해줌 N = math.ceil(N/-2) # -2로 나누고 올림 mbin += str(N) # 마지막으로 남은 몫을 더해줌 return mbin[:..