🐍python3/Programmers

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

박필중 2023. 6. 3. 13:01
728x90

📃문제설명

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (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합니다.

 

💻코드

import math

def solution(n):
    answer = 0
    sqrt_n = int(math.sqrt(n))
    for x in range(1, sqrt_n + 1):
        if n % x == 0:
            answer += 2  
    if sqrt_n ** 2 == n:
        answer -= 1  
    return answer

 

더보기

🧑‍💻공부

x와 n // x는 각각 약수 쌍을 이루게 된다.
제곱근이 정수인 경우 중복으로 계산된 약수 제거하면 중복이 없는 약수쌍 개수를 구할 수 있다.

import는 외부 모듈이나 패키지를 현재 코드로 가져오는 방법이다.

import문은 코드 맨 윗줄에 작성하면된다.

import 모듈이름

가장 기본적인 형태이다.

 

만약 math 모듈의 sqrt함수를 사용하려면

import math

result = math.sqrt(16)
print(result)

위와 같이 사용할 수 있다.

 

모듈을 import하고 별칭(alias)을 지정할 수도 있다.

이름을 짧게 만들어 사용할 수 있다.

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)

 

모듈에서 특정 함수 또는 클래스만 import할 수도 있다.

이렇게 하면 모듈 이름을 사용하지 않고 바로 함수나 클래스를 사용할 수 있다.

from random import randint

number = randint(1, 10)
print(number)

 

마지막으로 모듈의 모든 기능을 import하고 싶을 떄는 다음과 같이 '*'를 사용할 수 있다.

이렇게 하면 모듈의 모든 기능르 현재 네임프스페이스로 가져오게 된다.

from 모듈이름 import *

하지만 이 방법은 모듈의 이름과 기능이 혼동될 수 있으므로 권장되지 않는다.

이상적으로는 어떤 모듈이 어떤 기능을 제공하는지 이해하고 import할 때 필요한 것만 가져오는 것이 좋다.

이렇게 해야 코드는 가독성이 향상되고 잠재적인 이름 충돌을 방지할 수 있다.

728x90