728x90
반응형
Silver V
# 2609 최대공약수와 최소공배수
https://www.acmicpc.net/problem/2609
풀이
lis = list(map(int, input().split()))
lis2 = []
for i in lis:
for j in range(i+1):
try:
if i/j - i//j ==0:
lis2.append(j)
except:
pass
print(lis2)
lis2 = []
# for 구문으로 만들어진 변수를 다른 변수로 저장하고 싶은데 방법이?
24 18을 기입했을 때 [1, 2, 3, 4, 6, 8, 12, 1, 2, 3, 6, 9, 18]과 같이 나오게 된다.
for 구문을 돌릴 때마다 새로운 이름의 변수로 따로 저장될 수 있다면.. 하고 공빅데 카페에 도움을 구했다.
코치님들께서 동적변수 생성하는 방법과 내가 구현하고 싶던 코드 작성에 도움을 주셨다.
# 기술코치님 도움
lis = list(map(int, input().split()))
for i in lis:
a = globals()['num_{}'.format(i)] = list()
for j in range(i+1):
try:
if i/j - i//j ==0:
a.append(j)
except:
pass
print('num_{}: '.format(i), a)
배운 점
- globals()를 통해 동적 변수를 생성할 수 있다. 다만 동적 변수를 생성할 경우 변수 관리가 힘든 단점이 있다고 한다.
- format을 이용해서 동적 변수의 변수 명을 설정해줄 수 있다.
링크 : https://wonhwa.tistory.com/m/12
구글링 해서 본 다른 사람의 풀이
# 인터넷 다른 풀이 : def을 통한 gcd, lcm 함수 정의 풀이
# 유클리드 호제법 사용
a,b = map(int,input().split())
def gcd(a, b) :
if b==0:
return a
else :
return gcd(b,a%b)
def lcm(a, b) :
g = gcd(a,b)
return int(g*(a/g)*(b/g))
print(gcd(a,b))
print(lcm(a,b))
유클리드 호제법이라는 방식을 이용한, 함수를 정의해서 풀이하는 방식도 있다.
유클리드 호제법 및 시간 복잡도에 관한 자료 구조는 다음에 이해해보도록 하겠다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] #10867 중복 빼고 정렬하기 (0) | 2021.11.26 |
---|---|
[백준 파이썬] #1934 최소공배수 (0) | 2021.11.26 |
[백준 파이썬] #1181 단어 정렬 (0) | 2021.11.26 |
[백준 파이썬] #7568 덩치 (0) | 2021.11.26 |
[백준 파이썬] #2751 수 정렬하기 2 (0) | 2021.11.26 |