전체 글
-
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())) # 딕셔너리에 값 저장 ..
-
14562. [Python]태권왕Python_알고리즘/Silver I 2025. 1. 2. 18:46
1. 문제 https://www.acmicpc.net/problem/14562 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB그래프 이론너비 우선 탐색 3. 파이썬 코드 import sysfrom collections import deque# BFS 통한 탐색def BFS(start,target): # 초기값으로 시간, 시작점, 목표점 q = deque([(0,start,target)]) while q: time, current, target = q.popleft() # 현재 점수가 목표점수와 같은 경우 if current == target: # 시간 출력 print(time) br..
-
31263. [Python]대한민국을 지키는 가장 긴 힘Python_알고리즘/Silver III 2025. 1. 2. 17:43
1. 문제 https://www.acmicpc.net/problem/31263 2. 접근 방법 시간 제한: 1초메모리 제한: 1024MBTop-Down 3. 파이썬 코드 N = int(input())number = input()# 사람 수 체크cnt = 0# 인덱스 접근index = N-1# 인덱스 값이 0 보다 크거나 같을때 반복while index >= 0: # 만약 현재 인덱스 -2 값이 0 보다 작은경우 사람 추가 후 탈출 if index - 2 641: # 현재 일수를 나눠서 그 자리수 체크 day_str = str(day) # 만약 자리수가 한자리면 인덱스 -1 두자리면 -2 if int(day_str..
-
14655. [Python]욱제는 도박쟁이야!!Python_알고리즘/Silver V 2025. 1. 2. 17:09
1. 문제 https://www.acmicpc.net/problem/14655 2. 접근 방법 시간 제한: 2초메모리 제한: 256MB그리디 3. 파이썬 코드 N = int(input())# 첫 경기 값들first = list(map(int,input().split()))# 둘째 경기 값들second = list(map(int,input().split()))# 첫 경기 합first_max = 0# 둘째 경기 합second_max = 0# 첫 경기합 절대값for i in first: first_max += abs(i)# 둘째 경기합 절대값for i in second: second_max += abs(i)# 두 경기합 더하기print(first_max + second_max) 4. 문제를 풀고난..
-
1256. [Python]사전Python_알고리즘/Gold II 2024. 11. 20. 16:43
1. 문제 https://www.acmicpc.net/problem/1256 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB조합론 3. 파이썬 코드 def searching(N, M, K): result = [] total = N + M # 총 길이가 0보다 클때까지 while total > 0: # a의 개수가 0보다 큰 경우 만들 수 있는 조합 식 계산 if N > 0: count = comb(N + M - 1, M) else: count = 0 # K번 째 수가 위에서 계산산 조합식 count 값보다 작거나 같은 경우 a 로 시작 혹은 끝 if K comb(N + ..
-
1208. [Python]부분수열의 합 2Python_알고리즘/Gold I 2024. 11. 1. 22:58
1. 문제 2. 접근 방법 시간 제한: 1초메모리 제한: 256MB이분 탐색중간에서 만나기 3. 파이썬 코드 # input 값N, S = map(int,input().split())# 숫자 리스트num_list = list(map(int,input().split()))# 정렬num_list.sort()# 딕셔너리를 통해서 몇개 나왔는지 체크answer_dict = {}# 왼쪽 부분 합left_sum = []# 오른쪽 부분 합right_sum = []# 왼쪽 부분 합 구하는 로직for i in range(N//2): left_length = len(left_sum) for j in range(left_length): left_sum.append(left_sum[j]+num_list..