새소식

Programmers Coding Test/Java

[프로그래머스 120836] Java - 코딩테스트 입문 / 순서쌍의 개수

  • -

 

 

순서쌍의 개수

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120836

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

1)  문제

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다.
자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 1,000,000

 

 

 

2)  예시

 

 

Result Table
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합니다.

 

 

 

 

 

3)  풀이

 

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 정수 n을 매개변수로 하는 solution 메소드를 선언합니다.

solution은 정수를 반환하므로 데이터타입을 int로 합니다.

●  public int solution(int n) {

 

 

 

 

3. 정수 n에 대한 제한사항을 검사합니다. 제한사항을 만족하지 않을 경우, 예외처리합니다.

순서쌍의 개수인 정수 answer를 선언하고 초기화합니다.

   int answer = 0;

     if (n < 1 || n > 1_000_000) {
            throw new IllegalArgumentException("n은 1이상 1000000 이하입니다.");
        }

 

 

 

 

4. 먼저 a와 b의 직접적인 숫자를 구하는 것이 아니라, a가 i라고 생각했을 때,

i의 값을 1씩 늘려주며 n을 i로 나눴을 때 나머지 없으면, 즉 약수라면 순서쌍의개수 answer가 1씩 증가하게 합니다.

 

 

      for(int i = 1; i <= n; i++){
            if(n % i == 0){
                answer++;
            }
        }
        return answer;
    }
}

 

 

 

 

 

 

 

4)  코드

 

class Solution {
    public int solution(int n) {
        int answer = 0;

        if (n < 1 || n > 1_000_000) {
            throw new IllegalArgumentException("n은 1이상 1000000 이하입니다.");
        }

       for(int i = 1; i <= n; i++){
            if(n % i == 0){
                answer++;
            }
        }
        return answer;
    }
}

 

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.