import sys
cnt = int(input())
for i in range(cnt):
j = list(map(int, sys.stdin.readline().split()))
print(max(j)*min(j))
코드를 잘 적었다고 생각했지만 내가 원했던 출력값이 나오지않는다.
입력받은 cnt가 2라면 j리스트에 2번의 입력을 받을 수 있길 원했지만, 결과는
이런 식으로 리스트 입력이 두배로 받아진다😭
import sys
cnt = int(input())
j = list(map(int, sys.stdin.readline().split()))
print(max(j)*min(j))
결국 for문을 빼고 더 단순하게 만들었다.
결과는 성공!!
최대공약수와 최소공배수는 정말이지.. 중학생이후로 정말 구해본 적이없는 나😭
어떻게 하더라.. 하며 손으로 끄적끄적 구해보았는데 10년이 흘러도 손은 기억하고있었다😂
a, b = map(int, input().split())
def find_gcd_lcm(a,b):
for i in range(1, a+1):
if a % i == 0:
if b % i == 0:
gcd=i #for문 다 돌면서 마지막 gcd프린트
print(gcd)
if gcd == 1: #최대공약수가 1이라면 서로소
lcm = a*b
else:
lcm = gcd * (a // gcd) * (b // gcd)#최소공배수 구하는 코드
print(lcm)
find_gcd_lcm(a,b)
이 코드를 보고 처음에 최대공약수를 구하는 for문을 잘못 이해하고 최대가 아니고 최소..공약수가 구해지는거아냐ㅠㅠ?했지만, 다시보니 for문이 gcd=i가 되는 순간 끝나는게아니고 range내의 마지막 gcd를 찾을때까지 계속 도는 것이다.
그래서 마지막 gcd를 찾았다면 그것이 바로 최대공약수!
lcm 최소공배수를 구하는 코드는 하나하나 뜯어본다기보단 그냥 아 이런 식을 사용하면 최소공배수가 구해지구나 라고 받아들였다.
팀원 중 한 분이 가져오신 코드는 훨씬 간단했다.
a,b = list(map(int, input().split()))
a_1,b_1 = a,b
while b != 0:
a = a % b
a,b = b,a
print(a)
print(int(a_1*b_1/a))
이 코드는 최대공약수, 최소공배수의 원리를 잘 이해하고있어야 이해할 수 있는 코드인것같다. 이 코드도 참고해서 다시 풀어봐야겠다.