Python_알고리즘
-
13023. [Python]ABCDEPython_알고리즘/Gold V 2025. 4. 9. 03:41
1. 문제 https://www.acmicpc.net/problem/13023 2. 접근 방법 시간 제한: 2초메모리 제한: 512MB백트래킹 3. 파이썬 코드 import sys# 백트래킹def DFS(s,depth): # 최대 연결된 인원이 5명인 경우 1을 출력 후 탈출 if depth == 5: print(1) exit() # 연결된 인원들 탐색하며 백트래킹 for j in matrix[s]: if visited[j] == False: visited[j] = True DFS(j,depth+1) visited[j] = Falseinput = sys.stdin.readlineN, M ..
-
1106. [Python]호텔Python_알고리즘/Gold IV 2025. 4. 9. 03:20
1. 문제 https://www.acmicpc.net/problem/1106 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB배낭 문제다이나믹 프로그래밍 3. 파이썬 코드 import sysinput = sys.stdin.readlineC, N = map(int,input().split())dp = [10**9] * (C+101)moneys = []# 초기 들어온 값들을 dp 에 사람수와 비용으로 초기값 선언for _ in range(N): cost, people = map(int,input().split()) moneys.append((cost,people)) dp[people] = min(cost,dp[people])# 이후 C 값은 최대 1000 보다 작고 비용은 100 값보..
-
1744. [Python]수 묶기Python_알고리즘/Gold IV 2025. 4. 6. 08:54
1. 문제 https://www.acmicpc.net/problem/1744 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB정렬 3. 파이썬 코드 import sys# 인풋 리스트num_list = []input = sys.stdin.readlineN = int(input())for _ in range(N): num_list.append(int(input()))# 리스트 정렬num_list.sort()# + 부분과 - 부분 구분plus_list = []minus_list = []# 정답 및 len 사용하지 않을 변수 선언ans = 0plus_length = 0minus_length = 0# 반복문 돌며 + 리스트와 - 리스트 길이 및 저장for i in range(N-1,-1,-1): ..
-
13398. [Python]연속합 2Python_알고리즘/Gold V 2025. 3. 16. 22:52
1. 문제 https://www.acmicpc.net/problem/13398 2. 접근 방법 시간 제한: 2초메모리 제한: 512MB다이나믹 프로그래밍 3. 파이썬 코드 N = int(input())num_list = list(map(int,input().split()))# 문제에서 최소 한 개 이상의 수를 선택해야기 때문에 N이 1인 경우 예외처리 진행if N == 1: print(num_list[0])# N이 2개 이상인 경우else: # 첫 누적합을 구할 리스트를 생성 dp = [0] * N # 누적합을 구하기 위한 리스트는 첫 인덱스 값으로 선언 dp[0] = num_list[0] # 1번 인덱스부터 N 까지 반복 for i in range(1,N): ..
-
2529. [Python]부등호Python_알고리즘/Silver I 2025. 2. 6. 05:37
1. 문제 https://www.acmicpc.net/problem/2529 2. 접근 방법 시간 제한: 1초메모리 제한: 256MB백트래킹브루트포스 3. 파이썬 코드 # 백트래킹def backtracking(index, check): # 인덱스가 끝값에 도달할 경우 if index == K + 1: answer.append("".join(map(str, check))) return # 0 ~ 9 까지 값 반복하며 방문헀는지 안했는지 및 부등호에 따른 연산자 처리 for num in range(10): if not visited[num]: if index == 0 or (operator[index - 1] == "" and c..
-
1051. [Python]숫자 정사각형Python_알고리즘/Silver III 2025. 2. 5. 04:22
1. 문제 https://www.acmicpc.net/problem/1051 2. 접근 방법 시간 제한: 1초메모리 제한: 128MB구현 3. 파이썬 코드 N, M = map(int,input().split())matrix = [ list(map(int,input())) for _ in range(N)]# 최대 결과값이 1이 될 수 있으므로 1을 베이스로 시작result = [1]# 브루트포스 시작for i in range(N): for j in range(M): # 꼭지점 계산을 위한 초기값 선언 current = 1 # 범위 내에 존재하면 계속 반복문 진행 while i+current 4. 문제를 풀고난 후 생각 N, M 값이 크지 않고 모든..
-
2343. [Python]기타 레슨Python_알고리즘/Silver III 2025. 1. 17. 03:04
1. 문제 https://www.acmicpc.net/problem/2343 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB이분 탐색 3. 파이썬 코드 N, M = map(int, input().split())num_list = list(map(int, input().split()))# 시작 점과 끝점 설정을 블루레이 길이로 설정start = max(num_list)end = sum(num_list)# 이분 탐색while start 4. 문제를 풀고난 후 생각 평범한 이분 탐색과 같이 0 혹은 1로 초기값을 잡을 경우 불필요 연산 및 예외 케이스가 나올 수 있기 때문에 초기 시작값을 리스트 내에서 max 값으로 선언해준다.end 값으로는 결국 리스트를 모두 합한 값보다 클 수 가 없기 때문에 ..
-
11663. [Python]선분 위의 점Python_알고리즘/Silver III 2025. 1. 16. 03:28
1. 문제 https://www.acmicpc.net/problem/11663 2. 접근 방법 시간 제한: 1초메모리 제한: 256MB이분 탐색 3. 파이썬 코드 import sys# 많은 인풋 처리input = sys.stdin.readline# N 과 M 인풋N, M = map(int,input().split())# 점들 리스트num_list = list(map(int,input().split()))# 점들 정렬num_list.sort()# M 선분 횟수만큼 반복for _ in range(M): # 시작점 끝점 받기 start,end = map(int,input().split()) # 시작점과 끝점이 범위내에 없는 경우 연산 제외 if start > num_list[-1] or..
-
1654. [Python]랜선 자르기Python_알고리즘/Silver II 2025. 1. 15. 02:16
1. 문제 https://www.acmicpc.net/problem/1654 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB이분 탐색 3. 파이썬 코드 # 인풋 처리import sys# 많은 인풋input = sys.stdin.readlineN, K = map(int,input().split())# 랜선 길이num_list = []# 최대값 최소값 설정right = 2**31 - 1left = 1for _ in range(N): num_list.append(int(input()))# 이분 탐색while left = K: left = middle + 1print(right) 4. 문제를 풀고난 후 생각 이분 탐색문제로 right 값으로는 랜선 최대 길이 left 로는 최소 길이인..
-
2776. [Python]암기왕Python_알고리즘/Silver IV 2025. 1. 14. 04:09
1. 문제 https://www.acmicpc.net/problem/2776 2. 접근 방법 시간 제한: 2초메모리 제한: 256MB딕셔너리 3. 파이썬 코드 import sys# 많은 인풋처리T = int(sys.stdin.readline())# 테스트 케이스 반복문for i in range(1,T+1): # 딕셔너리 선언 num_dict = {} N = int(sys.stdin.readline()) nums = list(map(int,sys.stdin.readline().split())) M = int(sys.stdin.readline()) nums_check = list(map(int,sys.stdin.readline().split())) # 딕셔너리에 값 저장 ..