Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 완전탐색
  • 파이썬
  • 자료구조
  • dfs
  • hash
  • 정렬
  • GIT
  • EC2
  • JPA
  • 자바
  • BFS
  • 이코테
  • 면접을 위한 CS 전공지식 노트
  • MySQL
  • JSP
  • java
  • sql
  • 문자열
  • github
  • 인프런
  • 백준
  • MVC
  • 해시
  • Stack
  • 주간 학습 계획
  • 알고리즘
  • AWS
  • 재귀
  • 이분탐색

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

파이썬(Python) 알고리즘 문제풀이 소수 찾기 [프로그래머스 / 완전탐색]
알고리즘 정리

파이썬(Python) 알고리즘 문제풀이 소수 찾기 [프로그래머스 / 완전탐색]

2023. 6. 1. 11:50

출처) 프로그래머스 Facebook

문제 설명

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

 

 

제한사항

numbers는 길이 1 이상 7 이하인 문자열입니다.
numbers는 0~9까지 숫자만으로 이루어져 있습니다.
"013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

 

 

입출력 예시

numbers return
"17" 3
"011" 2

 

 

입출력 예 설명

예제 1)
[1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다.

 

예제 2)
[0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다.

(11과 011은 같은 숫자로 취급합니다.)

 

 

풀이 코드

해당 숫자가 소수인지 판별하는 함수를 외워뒀다면 크게 어렵지 않게 풀 수 있는 문제였다. (checkPrime())

17, 71 을 다르게 취급하니까 순서가 중요하다는 뜻이고 즉, 순열을 사용해 모든 경우의 수를 뽑아낸 뒤, 소수인지 판별하면 끝 !

중복이 발생할 수 있으므로 set() 을 활용해 제거하고 크기를 반환했다.

def checkPrime(n):
	if n < 2:
    	return False
        
    for i in range(2, int(n ** 0.5) + 1):
    	return False
        
    return True
    

from itertools import permutations

def solution(numbers):
    answer = []
    numbers_list = []
    
    for length in range(1, len(numbers) + 1):
        number_list.append(list(permutations(numbers, length)))
        
    # [('1',), ('7',), ('1', '7'), ('7', '1')] 을 압축
    numbers_list = [int(''.join(number)) for line in number_list for number in line]
    
    # 압축결과 - [(1), (7), (17), (71)] 
    
    for number in number_list:
    	if checkPrime(number):
            answer.append(number)
    
    return len(set(answer))

'알고리즘 정리' 카테고리의 다른 글

파이썬(Python) 알고리즘 문제풀이 수식 최대화 [프로그래머스 / 완전탐색]  (1) 2023.06.02
파이썬(Python) 알고리즘 문제풀이 불량 사용자 [프로그래머스 / 완전탐색]  (0) 2023.06.01
파이썬(Python) 알고리즘 문제풀이 카펫 [프로그래머스 / 완전탐색]  (0) 2023.05.31
파이썬(Python) 알고리즘 문제풀이 모의고사 [프로그래머스 / 완전탐색]  (0) 2023.05.31
파이썬(Python) 알고리즘 문제풀이 호텔방 배정 [프로그래머스 / 문자열]  (0) 2023.05.30
    '알고리즘 정리' 카테고리의 다른 글
    • 파이썬(Python) 알고리즘 문제풀이 수식 최대화 [프로그래머스 / 완전탐색]
    • 파이썬(Python) 알고리즘 문제풀이 불량 사용자 [프로그래머스 / 완전탐색]
    • 파이썬(Python) 알고리즘 문제풀이 카펫 [프로그래머스 / 완전탐색]
    • 파이썬(Python) 알고리즘 문제풀이 모의고사 [프로그래머스 / 완전탐색]
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바