Algorithm/BOJ

문제 링크 https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 문제 문제 풀이 처음에 제출했던 코드는 아래와 같다. n = input()[::-1] convert10 = 0 result = "" for i in range(len(n)): convert10 += int(n[i]) * (2 ** i) while convert10 != 0: result += convert10 % 8 convert10 //= 8 print(result[::-1]) 이렇게 직접 2진수를 10진수로 변환하고, 그것을 다시 8진수로 변환하는 코드를 짜서 제출했는데 수정을 계속 해..
문제 링크 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 문제 풀이 1234(2)를 10진수로 변환하려 할 때 2^3 * 1 + 2^2 * 2 + 2^1 * 3 + 2^0 * 4 의 계산으로 변환된다. 이 원리를 활용해서 N을 입력받고 0부터 순서대로 B^(len(N) - 1)까지 곱해지는 것에 대해 for문으로 작성하였다. N, B = input().split() N = N[::-1] B = int(B) table = "012345678..
문제 링크 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 문제 풀이 진법 변환 과정이 갑자기 기억이 안나서 헤맸다..ㅋㅋㅋ B진법으로 변환하려면 10진수 N을 숫자 B로 나머지가 0이 될 때까지 계속 나누어 나온 나머지를 저장하고 그 저장된 나머지를 반대로 표현하면 변환이 완료된 것이다. 이것을 코드로 표현하면 문제 풀이는 끝난다. 또 한가지 주의할 점은 10부터 35까지는 숫자 표현이 불가능하므로 미리 문자열에 알파벳을 저장해두어..
문제 링크 https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 문제 문제 풀이 t = int(input()) def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) for _ in range(t): arr = list(map(int, input().split())) k = arr.pop(0) sum = 0 for i in range(k): for j in range(k)..
문제 링크 https://www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 문제 문제 풀이 유클리드 호제법을 사용해 나온 최대공약수에 대해 출력할 때 문자열 1을 최대공약수만큼 반복 출력하도록 한다. a, b = map(int, input().split()) if a < b: a, b = b, a while b != 0: a = a % b a, b = b, a print("1" * a)
문제 링크 https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제 문제 풀이 t = int(input()) for i in range(t): a, b = map(int, input().split()) mul = a * b while b != 0: a = a % b a, b = b, a print(int(mul / a))
문제 링크 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 문제 문제 풀이 유클리드 호제법을 이용하는 문제이다. 유클리드 호제법에서는 숫자 a, b가 있을 때, a를 b로 나눈 나머지와 b의 최대 공약수가 a와 b의 최대공약수 와 같다.기존 b를 a에 / a를 b로 나누어 나온 나머지를 b에 대입하는 과정을 반복하여b가 0이 나올 경우 a가 최대공약수가 된다. 예)(18, 12) => (12, 6) => (6, 0)b가 0이 되는 a값은 6이므로 6이 18과 12의 최대공약수가 된다. 최소공배수는 a, b의 곱..
문제 링크 https://www.acmicpc.net/problem/10430 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net 문제 문제 풀이 A, B, C = map(int, input().split()) print((A + B) % C, ((A % C) + (B % C)) % C, (A * B) % C, ((A % C) * (B % C)) % C, sep='\n')
YOONJELLY
'Algorithm/BOJ' 카테고리의 글 목록 (8 Page)