목록알고리즘 문제 (57)
성장일기
분수로 이루어진 아이템, 모든 아이템을 딱 떨어지게 나눌 수 있는 가격 단위 구하기 새로운 가격 단위는 최대 몇 코인인가 (분수 형태로 출력- 분자 분모) import fractions def gcd(a,b): if b==0: return a else: return gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) n=int(input()) g,l=0,1 for i in range(n): a,b=map(int,input().split()) temp=fractions.Fraction(a,b) g=gcd(g,temp.numerator) #분자 l=lcm(l,temp.denominator) #분모 즉, 0이 올 수 없음 print(g,l)
빨간 사과 R개, 초록 사과 G개를 선수에게 같은 개수로 나눠주려고 하고, 사과가 남으면 안된다. 사과를 나누어주는 방법을 구하는 프로그램 작성 🔶시간초과 import sys R,G=map(int,sys.stdin.readline().split()) def gcd(a,b): if b==0: return a else: return gcd(b,a%b) li=[] for i in range(1,gcd(R,G)+1): #R,G의 최대공약수(gcd(R,G))의 약수 구하기 if gcd(R,G)%i==0: li.append(i) else: pass for i in li: #gcd의 약수만큼 print(i,R//i,G//i) 루트처리해서 메모리 줄이기 import math import sys R, G = map(in..
정수 M개의 모든 두 수의 쌍 중에서 가장 큰 최대공약수 찾기 import sys def gcd(a,b): if b==0: return a else: return gcd(b,a%b) n=int(sys.stdin.readline().rstrip()) for i in range(n): li=[] a=list(map(int,sys.stdin.readline().split())) for j in range(len(a)): #a의 길이 만큼 for k in range(len(a)): #a의 길이 만큼 if j>k and j!=k: #본인보다 인덱스가 큰 애들만 짝짓기 li.append(gcd(a[j],a[k])) #리스트에 gcd 추가 else: pass print(max(li)) #모든 쌍의 gcd 중 가장 큰..
첫째 줄에 N, S를 받아 온다 (N: 동생의 수, S: 현재 수빈이의 위치) 수빈이의 위치가 X일 때, 1초 후에 X+D나 X-D로 이동할 수 있음 모든 동생을 찾기 위한 D의 최대값 →유클리드 호제법 최대공약수(gcd)로 구할 수 있음 1. 현재 수빈이의 위치를 빼줌 2. 위치가 마이너스일 경우 절댓값 3. 각 수의 최대공약수 구하기 import sys def gcd(a,b): #유클리드 호제법 gcd if b==0: return a else: return gcd(b,a%b) n,s=map(int,sys.stdin.readline().split()) #동생 수, 수빈이의 현재 위치 a=list(map(int,sys.stdin.readline().split())) #동생들의 위치 li=[] for i ..
동기들의 친구 관계를 모두 조사한 리스트를 바탕으로 결혼식에 초대할 사람 수 구하기 1(본인)의 친구거나 친구의 친구까지 초대한다. 🌟주의점🌟 1이 항상 앞에 오지는 않는다 (테스트케이스로 알기 힘듦 - 문제를 잘 이해하자) 나는 JOI의 예선 테스트케이스를 보고 이해했다ㅠㅠ https://www.ioi-jp.org/joi/2009/2010-yo-prob_and_sol/index.html JOI 2009-2010 予選 問題・データ 第9回日本情報オリンピック 予選 www.ioi-jp.org ▲ JOI 2009/2010 9회 예선 문제 3번 import sys n=int(sys.stdin.readline().rstrip()) #상근이의 동기 수 m=int(sys.stdin.readline().rstrip())..