재귀함수(5)
-
[프로그래머스][LV.2] 소수 찾기 | python3
문제링크: 소수 찾기 문제설명한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한조건- numbers는 길이 1 이상 7 이하인 문자열입니다. - numbers는 0~9까지 숫자만으로 이루어져 있습니다. - "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 문제풀이permutations 의 조합 수를 변수로 두어 for문을 돌리면 전체 조합을 얻을 수 있다.예를 들어 5개의 문자가 있고 이 문자들을 전체 조합을 알고 싶으면 perm..
2025.03.14 -
[프로그래머스][LV.2] 다음 큰 숫자 | python3
문제 링크: 다음 큰 숫자 문제 설명문제 설명자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.제한사항- n은 1,000,000 이하의 자연수 입니다. 문제 풀이n보다 큰 수 중 이진법으로 바꾸었을때 n의 이진수와 1의 갯수가 같은 수 중 가장 작은 수를 구하는 문제이다.처음..
2025.02.06 -
[프로그래머스][LV.0] 배열 만들기 2 | python3
문제 링크: 배열 만들기 2 문제 설명문제 설명정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.제한사항- 1 ≤ l ≤ r ≤ 1,000,000 문제 풀이좀 전에 풀어서 기억이 안나는데 아마 안풀려서 참고 해서 풀었던 것 같다. 그리고 다시 풀려고 보니 지금도 낑낑 거리는 게 레전드....그래 그냥 5와 0 외의 숫자가 있으면 그냥 넘기면 된다. 다시 풀려고 봤을때 r의 최대 숫자가 너무 커서 for문으로 돌려도 되나? 싶었는데(시간상) 상관없었나봄...시간복잡도에 대해서도 제대로 공부해야 할 거..
2025.02.03 -
[프로그래머스][LV.1] 자연수 뒤집어 배열로 만들기 | python3
문제 링크: 자연수 뒤집어 배열로 만들기 문제 설명문제 설명자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.제한사항- n은 10,000,000,000이하인 자연수입니다. 문제 풀이일의 자리부터 역으로 뒤집는 것이기 때문에 10으로 나눈 나머지와 몫을 활용했다. 나머지를 리스트에 넣고 몫은 다음에 계산할 수가 된다. n이 10보다 작아지면 while문을 빠져나온다. 재귀함수로 풀어보고 싶었는데 실패했다. 한 번 알아봐야 겠다. 내코드def solution(n): answer = [] while True: if n 더보기다른사람풀이def digit_reverse(n): return ..
2025.01.16 -
[프로그래머스][LV.1] 자릿수 더하기 | python3
문제 링크: 자릿수 더하기 문제 설명문제 설명자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.제한사항- N의 범위 : 100,000,000 이하의 자연수 문제 풀이수를 문자열로 변환 후 한글자씩 루프돌려서 정수로 변환 후 더했다. 내코드def solution(n): answer = 0 n=str(n) for s in n: answer+=int(s) return answer코드 더보기다른사람풀이def sum_digit(number): '''number의 각 자릿수를 더해서 return하세요''' if number 재귀함수를..
2025.01.15