목록알고리즘 (175)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 풀이 코드 import math import sys num = int(input()) for i in range(0, num): a, b = map(int, sys.stdin.readline().split()) print(math.lcm(a, b)) 코드 해석 math 모듈을 이용하여 lcm을 간단히 구할 수 있다.
문제 링크 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 풀이 코드 n = int(input()) i = 2 while(n > 1): if n % i == 0: n = n / i print(i) i = 2 else: i += 1 코드 해석 수를 받은 뒤 n이 1보다 클 동안 2 이상의 작은 수로 반복하여 나누면 된다.
문제 링크 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 풀이 코드 import math a, b = map(int, input().split()) print(math.gcd(a, b)) print(math.lcm(a, b)) 코드 해석 math 라이브러리를 이용하여 간단히 해결하였다.
문제 링크 https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 풀이 코드 a = [[0] * 15 for i in range(5)] for i in range(5): w = list(input()) w_len = len(w) for j in range(w_len): a[i][j] = w[j] for i in range(15): for j in range(5): if a[j][i] == 0: continue; else: print(a[j][i..
문제 링크 https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 풀이 코드 i = 0 while True: i+=1 l, p, v = map(int, input().split()) if l == 0 and p == 0 and v == 0: break a = v//p b = v%p if l
문제 링크 https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 풀이 코드 print(oct(int(input(),2))[2:]) 코드 해석 int 함수의 두번쨰 인자를 기본 진법으로 설정하고 int를 바꿀 진법으로 감싸면 된다. oct는 8진법을 의미하고 앞에 두 문자는 8진법을 나타내는 문자라 제외 후 출력한다.
문제 링크 https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 풀이 코드 i = 0 while True: i+=1 l, p, v = map(int, input().split()) if l == 0 and p == 0 and v == 0: break a = v//p b = v%p if l
문제 링크 https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 풀이 코드 n,m=map(int, input().split()) print(n*m-1) 코드 해석 간단한 수학 공식을 이용하면 해결 할 수 있다. n-1 + (m-1)*n