본문 바로가기
문제풀이/Programmers

[프로그래머스] 완전탐색 2번 소수 찾기 - Python

by 서상혁 2019. 9. 15.

 < 프로그래머스 문제풀이 >

 


해답 )

1. 아리스토텔레스의 체 방식을 이용해 소수를 구분해주는 리스트를 만듭니다. 이게 하나하나 체크하는것보다 빠르다고 하더라구요! (* 참조 : https://geonlee.tistory.com/115)

 

2. itertools 라이브러리를 이용하여 모든 케이스의 순열들을 all_arr 리스트에 집어 넣습니다.

  (여기서 순열이라함은 수들을 나열해서 만들 수 있는 모든 케이스를 뜻합니다!

    ex: list(itertools.permutations("123",1)) = [('1',), ('2',), ('3',)]

        list(itertools.permutations("123",2)) = [('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')]  )

   이것을 map 으로 이어서 하나의 문자열로 만들어줍니다.

 

3. 만든 모든 문자열들이 소수인지 확인하고 소수인 것들만 answerset 에 추가해줍니다.

   마지막으로 answerset 인자의 수(소수의 개수)를 return 해줍니다.

   (굳이 set으로 하는 이유는 중복된 인자들을 받지 않도록! )

   * 예를들어 011 은 11과 같은 케이스에 속하므로 받지 않습니다!

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

728x90

댓글