안녕하세요!
오늘은 99클럽 코테 스터디 37일차입니다. 오늘은 컨디션이 너무 안좋네요.. 그래도 어쩔수있나요? keep going!해야죠.
오늘 문제는 오랜만에 비교적 쉬운 문제였습니다. 그럼 살펴볼까요?
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 6099 | 3389 | 2921 | 57.648% |
두 정수 n과 m이 주어졌을 때, 0 < a < b < n인 정수 쌍 (a, b) 중에서 가 정수인 쌍의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, n과 m이 주어진다. 두 수는 0보다 크고, 100보다 작거나 같다.
각 테스트 케이스마다 문제의 조건을 만족하는 (a, b)쌍의 개수를 출력한다.
3
10 1
20 3
30 4
2
4
5
ICPC > Regionals > Asia Pacific > Korea > Asia Regional - Taejon 2001 PB번
오늘 문제는 완전 탐색 기반의 문제입니다. 두 정수 n과 m이 주어졌을때 문제의 수식을 만족한다면 갯수를 카운트하여 n과 m에 해당하는 개수를 출력하는 전형적인 완전 탐색 유형의 문제입니다.
바로 코드로 살펴보겠습니다.
import sys
def ispair(n,m):
cnt = 0
for a in range(1,n):
for b in range(a+1,n):
if (a ** 2 + b ** 2 + m) % (a * b) == 0:
cnt += 1
return cnt
T = int(sys.stdin.readline().strip())
for _ in range(T):
n, m = map(int,sys.stdin.readline().split())
print(ispair(n,m))
너무 스무스하죠?
문제를 살펴보시면 0 < a < b < n이므로 이것을 이중 반복문으로 표기하고 조건을 만족한다면 카운트를 하는 코드입니다.
요근래 가장 쉬운 문제였습니다. 주어진 변수의 범위를 반복문, 그 반복문내에서 조건을 만족하면 카운트하는 완전 탐색 기반의 문제였습니다.
읽어주셔서 감사합니다.