300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 리눅스
- 킥스타트
- 프로그래머스
- nlp
- 그래프
- 딥러닝
- CSS
- OS
- 백준
- dp
- 동적 프로그래밍
- linux
- DFS
- 순열
- 파이썬
- 동적프로그래밍
- 코딩 테스트
- 프로그래밍
- google coding competition
- 브루트포스
- 코딩테스트
- kick start
- 알고리즘
- PYTHON
- 운영체제
- AI
- 구글 킥스타트
- 코딩
- BFS
- 네트워크
Archives
- Today
- Total
오뚝이개발자
[백준9613] GCD 합 본문
728x90
300x250
문제
https://www.acmicpc.net/problem/9613
9613번: GCD 합
문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1000000을 넘지 않는다. 출력 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다. 예제 입
www.acmicpc.net
풀이
이중 반복문을 써서 2개로 이루어진 숫자의 조합을 생성한 뒤 각각 유클리드 호제법을 적용시켜 gcd를 구하고 이들을 더해준다.
코드
def gcd(a,b):
while b!=0:
r = a%b
a = b
b = r
return a
if __name__=='__main__':
trial = int(input())
for _ in range(trial):
line = input().split()
num = line[1:]
num = [int(i) for i in num]
sum = 0
for i in range(int(line[0])-1):
j=i+1
while True:
if j==int(line[0]):
break
sum+=gcd(num[i],num[j])
j+=1
print(sum)
728x90
300x250
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준1476] 날짜 계산 (0) | 2020.03.05 |
---|---|
[백준2309] 일곱 난쟁이 (0) | 2020.03.05 |
[백준6588] 골드바흐의 추측 (0) | 2020.03.04 |
[백준1934] 최소공배수 (0) | 2020.03.03 |
[백준2609] 최대공약수와 최소공배수 (0) | 2020.03.03 |
Comments