알고리즘 문제 풀이: 파이썬/Programmers

[프로그래머스] 소수 만들기

hueco 2021. 6. 17.

 

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/12977

 

프로그래머스

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

programmers.co.kr

 

내 풀이:

 

참고한 풀이:

첫 번째)

 

두 번째)

 

Review:

 문제는 해결했지만, 만약 입력값이 더 커졌으면 내 풀이는 통과하지 못했을 것 같다. 소수는 1과 자기 자신만 약수를 가진다는 정의를 더욱 쉽게 이용하면 모든 경우를 따질 필요가 없는데, 내 풀이에서는 1부터 입력값까지의 모든 수로 나누고 약수의 개수가 2개인 것을 체크했다.

하지만 이 부분을 2부터 (입력값 - 1)까지 반복을 돌며 나누어 떨어지면 반복을 종료하는 식으로 코드를 짰다면 시간이 좀 더 적게 걸렸을 것 같다.

 

 참고한 풀이의 첫 번째 풀이는 조합(combination)을 구하기 위해 해당 모듈을 import해서 사용했다는 점이 눈에 띄어 가져왔다. 간략한 사용법은 참고를 확인하자.

 

Idea: 

 입력값으로 주어진 배열에서 3개의 수를 선택해서 구할 수 있는 모든 합계를 구하고 리스트에 추가한다. 해당 리스트에서 반복문을 돌며 원소를 하나 꺼내고 소수를 판별하고 소수가 맞다면 answer의 값을 1 증가 시킨다. 반복문이 끝나고 소수의 개수(answer)을 리턴한다.

 

참고:

combinations을 사용하기 위해 모듈을 import를 하고, 문제처럼 리스트에서 3개를 뽑아 만들 수 있는 조합을 구하기 위해 함수에 첫 번째 인수로 '배열'과 두 번째 인수로 '개수'를 입력한다.

 
 

댓글