[Kotlin/프로그래머스] 순서쌍의 개수

문제

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

 

 풀이 

class Solution {
    fun solution(n: Int): Int {
        var answer: Int = 0
        // var answer: MutableList<Int> = mutableListOf<Int>()
        
        for (i in 1..n) {
            if(n%i == 0) answer++
        }
        
        return answer
    }
}

 

입출력 예 설명을 읽다가 실수 했다!

문제에서 원하는 답은 '순서쌍의 개수' 인데 처음에 실수로 순서쌍 list 를 return 하려고 했었다.. ㅎㅎ

 

생각보다 문제 해결 방법은 간단하다. 주어진 예시를 참고하여 다시 설명해보자면, 주어진 값 n이 20일 때 '두 숫자의 곱이 n인 자연수 순서쌍' 을 구해야 한다.

→ 반대로 생각하면, 20을 나누어 떨어지게 하는 수를 구하는 것과 동일!

공약수를 찾으면 된다.

 

만약 주어진 숫자 n 나누기 i 의 나머지가 0이라면, 위에서 구하고자한 '나누어 떨어지게 하는 수' 가 되는 것이니까 + 1

 

설명이 오히려 더 복잡하게 보일지 모르겠지만....! 헷갈리는건 계속 보다보면 익숙해지는 법

공약수 유형의 문제는 이런방식으로 풀어가면 되는 걸로 ~_~