본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

(409)
#401 백준 파이썬 [4613] Quicksum https://www.acmicpc.net/problem/4613 PYTHON CODE alphabet = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ' string = input() while string != '#': result = 0 for i in range(len(string)): result += alphabet.index(string[i]) * (i+1) print(result) string = input()
#400 백준 파이썬 [9237] 이장님 초대 https://www.acmicpc.net/problem/9237 PYTHON CODE N = int(input()) tree = sorted(list(map(int, input().split())), reverse = True) answer = 0 for i, j in enumerate(tree): answer = max(answer, i+j+2) #몇 번째에 심는가 + 자라는데 얼마나 걸리는가 print(answer)
#399 백준 파이썬 [1964] 오각형, 오각형, 오각형... https://www.acmicpc.net/problem/1964 PYTHON CODE n = int(input()) print((((3*n*n+5*n)//2)+1)%45678) #3씩 증가하는 등차수열의 특징을 가진다
#398 백준 파이썬 [2628] 종이자르기 https://www.acmicpc.net/problem/2628 PYTHON CODE x, y = map(int, input().split()) x_list = [0, x] #가로 각각 길이 y_list = [0, y] #세로 각각 길이 for _ in range(int(input())): xy, length = map(int, input().split()) if xy == 0: y_list.append(length) else: x_list.append(length) x_list.sort() #좌, 위쪽부터 꺼내서 대조 하기 위함 y_list.sort() max_square = 0 for i in range(1, len(x_list)): for j in range(1, len(y_list)): widt..
#397 백준 파이썬 [2991] 사나운 개 https://www.acmicpc.net/problem/2991 PYTHON CODE A, B, C, D = map(int, input().split()) delivery = list(map(int, input().split())) for i in delivery: dog = 0 if 0 < i % (A + B)
#396 백준 파이썬 [1300] K번째 수 - 이분탐색 https://www.acmicpc.net/problem/1300 SOLUTION 의외로 이분탐색으로 풀 수 있는 문제다...! 이분탐색에 대한 정의를 알고 오길 추천한다. (https://claude-u.tistory.com/267) 가장 잘못된 방법은 직접 for문을 두 번 돌려 리스트를 만든 뒤, 오름차순 정렬하는 것. 어마무시하게 시간을 잡아먹고 효율적이지도 않다. 우리는 이분 탐색으로 어떤 수보다 작은 자연수의 곱(i * j)이 몇 개인지 알아낼 것이다. A보다 작은 숫자가 몇개인지 찾아내면 A가 몇 번째 숫자인지 알 수 있다.(너무나 당연) 예를 들어 10 * 10에서 20보다 작거나 같은 수를 생각해보자. 1*1~1*10 2*1~2*10 3*1~3*6 . . . 10*1~10*2 위 수가 존..
#395 백준 파이썬 [2110] 공유기 설치 - 이분탐색 https://www.acmicpc.net/problem/2110 SOLUTION 이분탐색으로 풀 수 있는 문제다. 이분탐색에 대한 정의를 알고 오길 추천한다. (https://claude-u.tistory.com/267) 공유기 설치 길이를 움직여(이분탐색하여) 적절한 집에 설치 가능한지 살펴보는 문제다. 1) 거리가 주어지면, 해당 라우터를 몇 개 설치할 수 있는지 산출하는 router_counter 함수를 정의한다. 2) 첫 집을 start로, 첫 집과 끝집의 차이를 end로 둔다. 3-1) 해당 거리로 충분한 설치 장소를 찾지 못했다면 거리를 줄여주고 3-2) 설치된 집이 더 많다면 거리를 늘려준다. PYTHON CODE import sys N, C = map(int, (input().split(..
#394 백준 파이썬 [2512] 예산 - 이분탐색 https://www.acmicpc.net/problem/2512 SOLUTION 이분탐색으로 풀 수 있는 문제다. 이분탐색에 대한 정의를 알고 오길 추천한다. (https://claude-u.tistory.com/267) 예산 금액을 움직여 균등하게 분배할 수 있는 상한선을 구하는 문제다. 1) 가장 적음 금액 0을 start로, 가장 큰 상한선 max(budget)을 end로 둔다. 2) 이분탐색이 끝날 때까지 while 문을 돌린다. 혹은 모든 예산을 배정해도 부족함이 없을 경우(total_budget > M)는 max(budget)을 출력한다. 3) mid를 start와 end의 중간으로 두고, mid와 예산(i) 중 작은 값을 total_budget에 더해준다. 4-1) total_budget이..