Programming/Algorithm 237

[백준] #1010 다리 놓기 python

https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 📕 설명 📕 M개 중 N개를 뽑으면 되는 문제이다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) for i in range(N): b, a = map(int ,input().split()) result = 1 for i in range(a,a-b,-1): result *= i for i in range(b,1,-1): result //= i print(result)

[백준] #3036 링 python

https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 📕 설명 📕 from fractions import Fraction import math 을 사용하여 풀이. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from fractions import Fraction import math N = int(input()) N_list = list(map(int, input().split())) for i in N_list[1:]: num = Fraction(N_list[0] // math.gcd(i, N_l..

[백준] #2981 검문 python

https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 📕 설명 📕 시간 복잡도를 고려해야하는 문제이다. 먼저, 수학적 접근이 가장 필요하다. M은 다른 수들 중 두 값을 뺀 값의 최대공약수이기 때문에 뺀 값의 최대 공약수를 구한다면 쉽게 구할 수 있다. 그리고, 공약수를 구할 때, 나눈 나머지 값이랑 몫 둘 다 공약수가 되기 때문에 이 둘을 다 고려해주면 복잡도를 대폭 낮출 수 있다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import math N = int(input()) ..

[백준] #1934 최소공배수 python

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 📕 설명 📕 최대 공약수와 최대 공배수를 구하는 함수를 구현하였다. DP를 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 def GCD_DP(a,b): if b == 0: return a return GCD_DP(b, a%b) def LCM(a,b): return (a*b) // GCD_DP(a,b) N = int(input()) for i in range(N): a, b ..

[백준] #2609 최대공약수와 최소공배수 python

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 📕 설명 📕 최대 공약수와 최대 공배수를 구하는 함수를 구현하였다. 🧑🏻‍💻 DP를 이용한 나의 풀이 🧑🏻‍💻 a, b = map(int ,input().split()) def GCD_DP(a,b): if b == 0: return a return GCD_DP(b, a%b) def LCM(a,b): return (a*b) // GCD_DP(a,b) print(GCD_DP(a,b)) print(LCM(a,b)) 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 a, b = map(int..

[백준] #1037 약수 python

https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 📕 설명 📕 약수의 성질을 고려하여 리스트에서 가장 큰 값과 가장 작은 값의 곱으로 N의 값을 구성하였다. 그리고, N == 1인 경우 A의 제곱을 N에 취하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 A = int(input()) A_list = list(map(int, input().split())) if A == 1: print(A_list[0] ** 2) else: print(min(A_li..

[백준] #5086 배수와 약수 python

https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 📕 설명 📕 배수와 약수의 성질을 이해하고 bool 자료형을 이용해 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 while True: a, b = map(int ,input().split()) TF_factor = True TF_multiple = True if a == 0 and b == 0: break if b % a != 0 or a >= b: TF_factor = False if a % b != 0 or b >= a or a // b ..

[백준] #1004 어린왕자 python

https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 📕 설명 📕 출발점과 도착점을 기준으로 각각 접하거나 안에 있는 것이 있다면 count를 1씩 더하고 출력한다. 한 쪽만 접하거나 밖에 있을 경우 탈출하므로 count를 1 더해야 한다. 원의 방정식에 대한 성질을 알고 있다면 쉽게 풀 수 있었을 것이다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 T = int(input()) for _ in range(T): start_x, start_y, ta..