전체 글 99

[Atcoder] ABC 326 C - Peak

이번에도 C까지만 풀고 쉬러 다녀왔습니다. 어제 인적성 검사만 두개를 보고왔어서 상당히 피곤했었네요. 결론적으로 x부터 시작하는 길이 M의 half-open interval에 몇개의 선물이 들어있는지 물어보는 문제입니다. import sys input = sys.stdin.readline N,M = map(int,input().split()) A = list(map(int,input().split())) dict = {} for i in range (0,N): if A[i] in dict: dict[A[i]] += 1 else: dict[A[i]] = 1 A = list(set(A)) A.sort() answer = [] if len(A) == 1: print(dict[A[0]]) else: ans = ..

코딩 2023.10.29

[BOJ] 백준 10164 격자상의 경로 Python

#10164 격자상의 경로 import sys import math input = sys.stdin.readline A,B,K = map(int,input().split()) if K == 0: print(math.comb(A+B-2,B-1)) else: x = (K-1) // B y = (K-1) % B a = math.comb(x+y,y) b = math.comb(A+B-x-y-2,B-y-1) print(a*b) 격자상의 경로를 조합 (Combination)을 이용하여 구하는 방식입니다. 마커가 단 하나기에 쉽게 풀립니다. 마커 다수의 경우에는 분기를 나누어 풀거나, 혹은 수학적 지식을 사용하지 않고 풀어야 할 것 같습니다. 예를 들어 DP라던가? 2차원 배열을 가지고 생각해야할 것 같습니다.

코딩 2023.10.28

[BOJ] 백준 10422 괄호 Python

#10422 괄호 import sys import math input = sys.stdin.readline p = 1000000007 def catalan(n): return (math.factorial(2*n) // (math.factorial(n+1) * math.factorial(n))) % p N = int(input()) result = [] for i in range (0,N): a = int(input()) if a % 2 != 0: result.append(0) else: result.append(catalan(a//2)) for i in range (0,N): print(result[i]) 카탈랑 수에 대한 내용이다. 과거 KMO (이젠 추억이 되어버린 올림피아드 ㅋㅋ;)를 준비하면서 공..

코딩 2023.10.28

[BOJ] 백준 28683 피타!피타!피타츄! Python

import sys import math input = sys.stdin.readline N = int(input()) if int(math.sqrt(N)) - math.sqrt(N) == 0: print(-1) else: cnt1 = 0 #N이 빗변인 경우 for i in range (1,int(math.sqrt(N/2))+1): j = N - i**2 #j가 어떤 정수의 제곱꼴인지 판단하는 방법# if math.sqrt(j) - int(math.sqrt(j)) == 0: cnt1 += 1 else: continue #N이 빗변이 아닐 경우 #N = B ** 2 - A ** 2 = (B+A)(B-A)로 계산된다. 두 수의 기우성이 동일해야함. cnt2 = 0 for i in range (1,int(ma..

코딩 2023.10.28