본문 바로가기

파이썬33

백준 20183번 골목 대장 호석 - 효율성 2 (Python) .. 우당탕탕 시행착오들.. 1. 문제 조건- N개의 교차로와 M개의 골목 (교차로 : 노드 / 골목 : 간선)- 각 간선의 가중치가 그 골목의 요금- 소지한 돈보다 많은 비용이 나오면 그 경로로는 갈 수 없음- 수치심은 경로 상에서 가장 많이 낸 돈의 금액, 최소한의 수치심을 얻어야 함- 수치심을 줄일 수록 많은 돈이 필요하고 수치심이 높을 수록 적은 돈이 필요함 - 입력 - 범위1 1 1 1 1   2. 아이디어 및 시행착오시행착오 1.  다익스트라로 경로를 이동하되, 이동한 경로의 총합으로 최소비용을 계산하는 것이 아니라, max 배열을 두고 max배열을 갱신하면서 다익스트라를 돌리려고 했다. (가지고 있는 돈보다 경로를 지나온 합이 작을 때만 갱신하도록 dist배열도 관리를 하긴 한다.) 특정 노드에 왔을 때, 그 노드까지 .. 2024. 8. 18.
(Python) 백준 2164번 카드2 파이썬에 적응하는 중인데, 아직 파이썬의 자료구조 활용에 많이 서툴다. 이 문제에서 List를 사용해 Queue를 구현해 풀었다가 시간초과를 만나버렸다.  초기 코드n = int(input())cards = [ i+1 for i in range(n)]while len(cards)>1: cards.pop(0) if len(cards) == 1: break cards.append(cards.pop(0))print(cards[0]) 정답 코드from collections import dequen = int(input())cards = deque([i+1 for i in range(n)])while len(cards)>1: cards.popleft() if len(cards) == 1.. 2024. 7. 20.
백준(파이썬, python) - 2581번 소수 (2022.11.07) 1) 문제 2) 풀이 import sys M = int(sys.stdin.readline()) N = int(sys.stdin.readline()) numbers = list(map(int,range(M,N+1))) prime_num = [] for i in numbers: if i > 1 test = 0 for j in range(2,i): if i%j == 0: test += 1 if test == 0: prime_num.append(i) sum = 0 for i in prime_num: sum += i if len(prime_num) ==0: print(-1) else: print(sum) print(min(prime_num)) 3) 문법 및 풀이과정 앞서 풀었던 소수 찾기 풀이를 조금만 응용하면 .. 2022. 11. 7.
백준(파이썬, python) - 1978번 소수 찾기 (2022.11.07) 1) 문제 2) 풀이 import sys T = int(sys.stdin.readline()) numbers = list(map(int,sys.stdin.readline().split())) count = 0 for i in numbers: if i ==2: count+=1 elif i == 1: count +=0 else: test = 0 for j in range(2,i): if i%j == 0: test += 1 if test == 0: count += 1 print(count) 3) 문법 및 풀이과정 소수란, 1과 자기 자신을 제외한 다른 수로 나누어지지 않는 수를 의미한다. 에라토스테네스의 체를 활용할 수도 있지만 이 문제의 경우 입력값의 범위가 100이하로 그렇게 크지 않고, 시간제한도 넉넉하.. 2022. 11. 7.
백준(파이썬, python) - 2839번 설탕 배달(2022.11.07) 1) 문제 2) 풀이 import sys n = int(sys.stdin.readline()) if n%5 == 0: num = n//5 elif (n%5) != 0: if (n%5) == 3: num = (n//5) + (n%5)//3 elif n >5 and (n%5 ==1 or n%5 == 4): num = (n//5) -1 + (n%5+5)//3 elif n >10 and n%5 == 2: num = (n//5) -2 + (n%5 +10)//3 else: num = -1 print(num) 3) 문법 및 풀이과정 주어진 입력값을 3과 5의 합으로 구성하는데, 이 때 구성할 수 있는 숫자의 최소 개수를 구하라는 문제이다. 봉지의 수가 더 적기 위해서는 최대한 5kg의 봉지를 많이 사용하는 것이 좋다.. 2022. 11. 7.
백준(파이썬, python) - 10250번 ACM호텔(2022.11.06) 1) 문제 2) 풀이 (1) import sys N = int(sys.stdin.readline()) for i in range(N): a, b, c = map(int,sys.stdin.readline().split()) if c%a ==0: y = a x = c//a else: y = c%a x = c//a + 1 print('{}{}'.format(y,format(x,'02'))) (2) import sys N = int(sys.stdin.readline()) for i in range(N): a, b, c = map(int,sys.stdin.readline().split()) if c%a ==0: y = a x = c//a else: y = c%a x = c//a + 1 print('{}{}'.fo.. 2022. 11. 7.