[파이썬][백준 5217번] 쌍의 합
1. 문제Permalink
[Bronze III] 쌍의 합 - 5217Permalink
성능 요약Permalink
메모리: 30840 KB, 시간: 64 ms
분류Permalink
구현(implementation)
문제 설명Permalink
1보다 크거나 같고 12보다 작거나 같은 자연수 n이 주어졌을 때, 합이 n이 되는 두 자연수의 쌍을 찾는 프로그램을 작성하시오.
예를 들어, 5가 주어진 경우 가능한 쌍은 1,4와 2,3이 있다. 두 수는 항상 달라야 한다. 즉, 3,3은 올바른 쌍이 아니다. 또, 첫 번째 수가 두 번째 수보다 작아야 한다.
출력하는 쌍은 항상 사전순으로 출력해야 한다. 즉, 각 쌍의 작은 수로 비교를 해야 한다. 예를 들어 1,5는 2,4보다 사전순으로 앞선다.
입력Permalink
첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
출력Permalink
각 테스트 케이스마다 n을 만드는 쌍을 사전순으로 출력한다. n을 만드는 쌍이 없는 경우에는 아무것도 출력하지 않는다.
예제 출력 형식을 참고해 출력한다.
출처: 백준, https://https://www.acmicpc.net/
2. 해결방법 시간복잡도Permalink
- 단순 코딩 O(N^2)
3. 문제 해결 및 코드Permalink
H = int(input()) | |
for _ in range(H): | |
n = int(input()) | |
print(f"Pairs for {n}:", end=' ') # Pairs for 먼저 출략 | |
for i in range(1, n//2+1): # 두 쌍이므로 n // 2까지의 범위 | |
if i != n-i: | |
if i != 1: # 만약 1이 아니라면 | |
print(',', end=' ') | |
print(i, n-i, end='') # 쌍을 출력한다 | |
print() # 한 줄이 끝난 뒤 한칸 띄기 |
-
주석을 참고하면서 이해를 돕습니다.Permalink
4. 알고리즘 및 해설Permalink
- 이중 반복문을 통해 입력값을 2로 나눈 값까지 반복문을 돌린다.
- 만약 해당 위치 값이 1이 아닌 경우 Pairs for 다음에 ,를 출력한다.
- 해당 위치 값이 n-1이 아닌 경우 해당 위치값과 입력값 - 해당 위치값을 쌍으로 출력한다.
- 이후 반복문이 한번 끝날 때마다 한칸을 출력한다.
- 만약 해당 위치 값이 1이 아닌 경우 Pairs for 다음에 ,를 출력한다.