전체 글 188

백준 2609번 Python / Math 문제 링크 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 풀이 import math num1, num2 = map(int, input().split()) gcd = math.gcd(num1,num2) print(gcd) print(num1*num2//gcd) math 라이브러리를 불러와 최대공약수를 구해주는 gcd()함수를 사용했습니다. replit에서 math.lcm() 을 사용하니 오류가 발생하여 최소공배수는 직접 구했습니다. 최소공배수는 두 수의 곱 / 최대공약수를 하면 구할 수 있기 때문에 계산을 진행.. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 11.
백준 10610번 Python / Greedy 문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 풀이 N = list(input()) N.sort(reverse=True) sum = 0 if '0' not in N: print(-1) else: for i in N: sum += int(i) if sum%3 != 0: print(-1) else: print(''.join(N)) 30의 배수가 될 수 있는 조건은 끝자리가 0이면서 각 자리 수의 합이 3의 배수여야 합니다. 처음에 내림차.. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.
백준 1929번 Python / Math 문제 링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 풀이 m,n = map(int, input().split()) state = 0 for i in range(m, n+1): state=0 if i > 1: for j in range(2, i): if i % j == 0: state += 1 if state == 0: print(i) 처음에는 위와 같은 풀이로 진행했습니다. 2부터 i-1 까지 모든 수를 체크해가며 출력하다보니 시간 초과가 발생했습니다. import m.. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.
백준 2217번 Python / Greedy 문제 링크 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 풀이 N = int(input()) ropes = [] answer = [] for _ in range(N): ropes.append(int(input())) ropes.sort(reverse=True) for i in range(N): answer.append(ropes[i]*(i+1)) print(max(answer)) 처음엔 내림차순이 아니라 오름차순으로 정렬한 후, 리스.. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.
백준 1026번 Python / Greedy 문제 링크 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 풀이 N = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) A.sort() answer = 0 for i in range(len(A)): max_value = max(B) answer = answer + A[i] * max_value B.remove(max_value) pri.. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.
백준 5565번 Python / Math 문제 링크 https://www.acmicpc.net/problem/5565 5565번: 영수증 첫째 줄에 10권의 총 가격이 주어진다. 둘째 줄부터 9개 줄에는 가격을 읽을 수 있는 책 9권의 가격이 주어진다. 책의 가격은 10,000이하인 양의 정수이다. www.acmicpc.net 풀이 total = int(input()) books = [] for _ in range(9): books.append(int(input())) print(total - sum(books)) 전체 가격을 total 변수에 저장한 후 나머지 9개의 가격들은 books라는 리스트에 저장했습니다. 그리고 sum() 함수를 사용해 리스트의 모든 값을 더한 후 전체 가격에서 빼고 출력했습니다. 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.
백준 10250번 Python / Math 문제 링크 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 for _ in range(int(input())): h,w,n = map(int, input().split()) X = n // h + 1 Y = n % h if Y == 0: X = n//h Y = h print(Y*100+X) n % h 가 0일 때를 생각하지 못하고 계속 틀렸다가 나중에 깨달았다. 카테고리 없음 2022. 2. 10.
백준 10870번 Python / Math 문제 링크 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 n = int(input()) def fibo(num): if num 알고리즘 정복하기!/백준 문제풀이 2022. 2. 10.