본문 바로가기
반응형

전체 글252

[백준][Python] 14916번 거스름돈 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 코드 n = int(input()) ans = 0 while n != 0: if n%5 == 0: ans += n//5 break else: n -= 2 if n < 0: ans = -1 break ans += 1 print(ans) 설명 5는 2의 배수가 아니기 때문에 큰 수인 5로 먼저 거스르고 나머지를 2로 거스르는 방법은 사용할 수 없다. 그래서 일단 주어진 수가 5의 배수이면 나눈 값을 ans 변수에 더해줬고, 만약 5의 배수가 아니면 2를 빼주고 ans를 1 증가시켰다. 근데 2를 빼준 수가 음수가 되면 이것은 거슬러 줄 수 없는 상황이므로 -1을 출력하게 했다. 2022. 3. 23.
[백준][Python] 1747번 소수&팰린드롬 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 코드 import math N = int(input()) def prime(N): for i in range(2,int(math.sqrt(N))+1): if N%i == 0: return False return True ans = 0 for i in range(N,1000001): if i>1 and str(i) == str(i)[::-1]: if prime(i): print(i) ans = 1 break if ans == .. 2022. 3. 22.
[백준][Python] 1934번 최소공배수 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 코드 import sys import math t = int(input()) for _ in range(t): a,b = map(int,sys.stdin.readline().split()) print(math.lcm(a,b)) 2022. 3. 21.
[백준][Python] 1110번 더하기 사이클 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 코드 n = int(input()) cnt = 0 first = n while 1: a = n//10 b = n%10 sum = a+b n = b*10 + (sum%10) cnt += 1 if n == first: break print(cnt) 2022. 3. 18.
[백준][Python] 9613번 GCD 합 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 코드 import sys import math n = int(input()) for _ in range(n): n_list = list(map(int,sys.stdin.readline().split())) sum = 0 for i in range(1,len(n_list)): for j in range(i+1,len(n_list)): sum += math.gcd(n_list[i],n_list[j]) print(sum) 설명 math 모듈을 .. 2022. 3. 17.
[백준][Python] 5347번 LCM 5347번: LCM 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다. www.acmicpc.net 코드 import sys def gcd(a,b): while b: mod = b b = a%b a = mod return a n = int(input()) for _ in range(n): a,b = map(int,sys.stdin.readline().split()) ans = (a*b)//gcd(a,b) print(ans) 설명 gcd 함수를 이용해서 최대공약수를 먼저 구한 뒤 두 수의 곱을 최대공약수로 나눠준 값이 최소공배수가 된다. 2022. 3. 16.
[백준][Python] 2960번 에라토스테네스의 체 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 코드 N, K = map(int,input().split()) n_list = [False]*(N+1) cnt = 0 for i in range(2,N+1): if n_list[i] == False: for j in range(i,N+1,i): if n_list[j] == False: n_list[j] = True cnt += 1 if cnt == K: print(j) 설명 n_list라는 리스트를 만들어 처음 값을 False로 둔다. 2부터 차례대로 자신의 배수를 모두 지워나가서 리스트값을 True로 바꿔주면 결국 i값 중 소수만 (n_list[i.. 2022. 3. 15.
[백준][Python] 11653번 소인수분해 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 코드 N = int(input()) a = 2 while N != 1: for i in range(a,N+1): if N % i == 0: N //= i print(i) break a = i 설명 가장 작은 소수는 2이기 때문에 a는 처음에 2로 둔다. 2로 더이상 나눠지지 않으면 다음 수로 넘어가게 된다. 이때 a 값을 가장 최근에 나눠진 수로 업데이트해서 for문을 돌릴 범위를 줄여줘서 시간을 단축했다. 2022. 3. 14.
[백준][Python] 4256 트리 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 코드 import sys def post(preorder,inorder): if len(preorder) == 0: return elif len(preorder) == 1: print(preorder[0], end = ' ') return r_index = inorder.index(preorder[0]) # 루트노드가 inorder에서 몇 번째에 있는지 left_in = inorder[0:r_index] left_pre = preorder[1:len(.. 2022. 3. 11.
반응형