🗣️ 메모
최대공약수에 이어 공약수 활용하는 문제
✏️ [순서쌍의 개수]
문제 설명
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
입출력 예
n | result |
20 | 6 |
100 | 9 |
입출력 예 설명
입출력 예 #1
- n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.
입출력 예 #2
- n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.
🔥 TRY #1 [시간 초과]
👉🏻 i를 0부터 n까지 ++, j를 n부터 0까지 -- 해서 순서쌍이 되는 경우 answer++을 한다
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=0; i <= n; i++) {
for(int j=n; j > 0; j--) {
if(i * j == n) {
answer++;
}
}
}
return answer;
}
}
대박... 1000000까지 for문 돌리는 것도 시간 초과 안 나왔는데 테스트 수가 뭐길래
🔥🎉 TRY #2 [실행 결과]
👉🏻 입출력 예시를 뜯어보니 나누어떨어지는 수임
👉🏻 순서쌍(2개)이긴 하지만 어쨌든 리턴값은 그 순서쌍이 몇 개인지를 보는 거니까 가능하지 않을까?
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i <= n; i++) {
if(n % i == 0) {
answer++;
}
}
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습,https://school.programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr