Algorithm(91)
-
[ABC 366] AtCoder Beginner Contest 366 리뷰
N, T, A라는 숫자가 주어지고, A와 T는 각각 현재 득표수를 나타내는 상황이며 N은 총 표수를 나타낸다.이때 이 선거의 결과 여부를 판단하는 문제가 되겠다.남아있는 표수를 구한 뒤, 케이스를 나눠 계산해주면 되겠다.import sysinput = sys.stdin.readlinen,t,a = map(int,input().split())remain = n - t - aif t 주어진 문자열을 규칙에 맞게 출력해주면 되겠다.즉, 아래에서부터 위로 읽어주는건데 (f->d->a... 순), 마지막에 딸려있는 공백은 읽지 않고,중간에 껴있는 공백은 *를 넣어주면 되겠고, 해당 코드는 아래와 같이 나오겠다.import sysinput = sys.stdin.readlineN = int(input())m..
2024.08.17 -
[BOJ, 백준] 17404 RGB 거리 2
https://www.acmicpc.net/problem/17404 해답코드는 아래와 같다.N = int(input())cost = []for _ in range (0,N): a = list(map(int,input().split())) cost.append(a)def f(N, cost): if N == 2: return min(cost[0][0] + cost[1][1], cost[0][0] + cost[1][2], cost[0][1] + cost[1][2], cost[0][1] + cost[1][0], cost[0][2] + cost[1][0], cost[0][2] + cost[1][1]) else: #dpi_j는 시작이 i고 마지막이 j색인 것 ..
2024.08.12 -
[BOJ, 백준] 1806 부분합 Python
부분합 전통적인 문제입니다. 문제에서 S "이상" 이라는 것을 못보고 뻘짓하느라 오답을 마구마구 제출했네요 ,,, 코드는 이하와 같습니다. prefix_sum의 i번째 원소를 num[i]까지의 합이라고 하면num_i 부터 num_j까지의 합은 prefix_sum[j] - prefix_sum[i-1] 가 됩니다.이를 활용하면 다음과 같습니다.import sysinput = sys.stdin.readlineN,S = map(int,input().split())num = list(map(int,input().split()))prefix = [0]for i in range (0,N): prefix.append(prefix[-1] + num[i]) answer = []l,r = 0,1while l = ..
2024.08.10 -
[BOJ, 백준] 8895 막대배치 Python
조합론 문제를 덜 풀었길래 ... 조합론 문제를 찾다보니 이런 친구를 찾았습니다. 아이디어는 다음과 같습니다. 처음에 3차원 array를 만들어줍니다. (dp로서 문제를 해결하기 위해) 첫번째 인덱스는 막대의 갯수 / 두번째 인덱스는 왼쪽에서 봤을때의 개수 / 세번째 인덱스는 오른쪽에서 봤을때의 개수 입니다. 초기값 설정을 위해, dp[1][[1][1]은 1개가 되는 것으로 설정을 해둡니다.이후 다음과 같이 생각할 수 있겠습니다. dp[i][j][k]는 블럭이 i개, 왼쪽에서 봤을 때 j개 / 오른쪽에서 봤을 때 k개가 됩니다.이때 블럭은 다음과 같이 나타낼 수 있습니다.첫번째 오는 블럭의 높이를 h_1이라고 하고 두번째는 h_2 ... 마지막은 h_i 라고 합니다. 이때, 왼쪽에서 봤을 때 j개 라는 ..
2024.08.05 -
[BOJ, 백준] 7869 두 원
중요한 것은 소수점 셋째자리까지 출력하는 것이겠다. 예를 들어, 0이라면 0.000으로 출력하는 것인데 이 부분에 대해서는 문자열로 출력해주기로 했다. 두 원의 위치 관계에 대해서는 중심 사이의 거리와 반지름을 활용하면 되겠다. import mathx_1,y_1,r_1,x_2,y_2,r_2 = map(float,input().split())#일반적으로 r1이 r2보다 더 길거나 같다고 가정하자.if r_1 = d ** 2: answer = math.pi * (r_2 ** 2) print(round(answer, 3))#그 외의 경우else: theta_1 = 2 * math.acos((r_1 ** 2 + d ** 2 - r_2 ** 2) / (2 * r_1 * d)) theta_2 ..
2024.07.26 -
[BOJ, 백준] 1007 벡터매칭 Python
문제는 다음과 같다 해답 코드는 다음과 같이 나오겠다. 이 문제에서 중요하다고 느껴지는 것은, 포함된 벡터들의 "합"의 크기의 최솟값인 점이 되겠다.주어진 좌표가 (x1,y1) , ... , (x_2n, y_2n) 이러한 형식으로 주어져있다면initial point들의 좌표를 (nx_1, ny_1) , ... , (nx_n, ny_n)로 둘 수 있겠고terminate point들의 좌표를 (mx_1,my_1), ..., (mx_n, my_n)으로 둘 수 있겠다. 이렇게 좌표를 나누는 것이 가능했을 때, 이곳의 벡터들의 합은 항상 고정되는 것을 알 수 있다. (nx_1, ny_1)이 (mx_1, my_1), ... , (mx_n, my_n) 중 하나로 매칭되어서 (mx_k1, my_k1)과 매칭 되었을 ..
2024.07.26