목록수학 (26)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 풀이 코드 A,B,N = map(int, input().split()) for i in range(N) : A = (A%B)*10 result = A//B print(result) 코드 해석 런타임 에러때문에 수학적인 방식으로 풀이하였다.
문제 링크 https://www.acmicpc.net/problem/1755 1755번: 숫자놀이 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 www.acmicpc.net 풀이 코드 m, n = map(int, input().split()) dict = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five', '6':'six', '7':'seven', '8':'eight', '9':'nine', '0':'zero'} l = [] for i in rang..
문제 링크 https://www.acmicpc.net/problem/5347 5347번: LCM 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 코드 from math import gcd def lcm(x,y): return x*y // gcd(x,y) n = int(input()) for _ in range(n): a,b = map(int,input().split()) print(lcm(a,b)) 코드 해석 math의 gcd 함수를 사용하고 유클리드 호재법을 적용 하여 최대공약수를 구한다.
문제 링크 https://www.acmicpc.net/problem/1059 풀이 코드 L = int(input()) S = list(map(int,input().split())) n = int(input()) S.sort() if n in S: print(0) else: min = 0 max = 0 for num in S: if num n and max == 0: max = num max -= 1 min += 1 print((n-min)*(max-n+1) + (max-n)) 코드 해석 (n보다 작은 수의 개수) * (n을 포함한 n보다 큰 수의 개수) + (n보다 큰 수의 개수) 라는 규칙을 적용한다. 먼저 수를 받은 후 리스트에 저장한다. 만약 리스트 안..
문제 링크 https://www.acmicpc.net/problem/10158 풀이 코드 w, h = map(int, input().split()) p, q = map(int, input().split()) t = int(input()) a = (p + t) // w b = (q + t) // h if a % 2 == 0: x = (p + t) % w else: x = w - (p + t) % w if b % 2 == 0: y = (q + t) % h else: y = h - (q + t) % h print(x, y) 코드 해석 가로와 세로를 따로 생각한다. 초기값에서 시간을 더한값을 격자의 길이로 나눈 나머지를 구하면 된다. 만약 나며지가 0이 아니면 그 값에서 격자의 길이를 뺀다.
문제 링크 https://www.acmicpc.net/problem/13241 풀이 코드 a, b = map(int, input().split()) def gcd(a, b): while b: mod = b b = a % b a = mod return a print(a*b//gcd(a, b)) 코드 해석 a와 b의 최소공배수는 a x b / gcd(a,b) 이다. gcd를 구하면 된다.
문제 링크 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 코드 n = int(input()) cnt = 0 i = 0 while True: if n % 5 == 0: cnt += n//5 break else: n -= 2 cnt += 1 if n < 0: break if n
문제 링크 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 풀이 코드 n = int(input()) arr = [0]*(n+2) arr[1] = 1 for i in range(2, n+2): arr[i] = arr[i-1] + arr[i-2] print((arr[n]+arr[n+1])*2) 코드 해석 피보나치 수열을 이용하는 문제이다. ((n번째 정사각형 한 변의 길이) + (n+1 번째 정사각형 한 변의 길이)) * 2 = 둘레 라는 둘레 증가..