본문 바로가기

3. 알고리즘/프로그래머스

(44)
[python] 12. 이상한 문자 만들기(feat. enumerate 함수) 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 - 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야 합니다. - 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return "try hello world" "TrY HeLIO WoRID" 나의 코드 def solution(s): result = [] for s in s.split(' '): #띄어쓰기를 기준으로 문자를 분리해준다. st = '' for i in rang..
[python] 11. 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 - 입력된 수, num은 1이상 8000000 미만인 정수입니다. 입출력 ..
[python] 10. 하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 - x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false 연습장 1. str->list를 이용해서 arr를 자릿수로 분리해준다. 2. list->map->int를 이용해서 리스트를 숫자형으로 변환시켜준다. 3. sum으로 리스트의 총합을 구해준다. 4. arr가 num로 나누어 떨어지면 True, 아니면 False로 반환시켜준다..
[python] 9. 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 - s는 길이 4이상, 20이하인 문자열입니다. 입출력 예 phone_number return "01033334444" "*******4444" "027778888" "*****8888" 나의 코드 def solution(phone_number): x = len(phone_number) return '*'*(x-4) + phone_number[x-4:x]
[python] 8. 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 - n은 1이상, 50000000000000이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 나의 코드 import math def solution(n): num = math.sqrt(n) if int(num) == num: return (num+1)**2 else: return -1 다른 풀이 def solution(n): sqrt = n ** (1/2) if sqrt % 1 == 0: return (sqrt + 1) ** 2 retur..
[python] 7. 정수 내림차순으로 배치하기(feat. join 함수) 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 - n은 1이상 8000000000 이하인 자연수입니다. 나의 코드 def solution(n): answer = [] result = '' num = n for i in range(len(str(n))): answer.append(num%10) num = num // 10 answer.sort(reverse=True) for x in range(len(answer)): result += str(answer[x]) return int(result) 모범 답안 def solution(n): l..
[python] 6. 자연수 뒤집어 배열로 만들기(feat. reversed 함수) 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5, 4, 3, 2, 1]을 리턴합니다. 제한 조건 - n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 [5,4,3,2,1] 나의 코드 def solution(n): result = [] for i in range(len(str(n))-1, -1, -1): result.append(int(str(n)[i])) return result 모범 답안 def solution(n): return list(map(int, reversed(str(n)))) * reversed()함수: 리스트의 자료형이 아니다. list()를 통해 자료형으로 변환해줘야 한다.
[python] 5. 자릿수 더하기 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 - N의 범위: 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 나의 코드 def solution(N): answer = 0 for i in range(len(str(N))): answer += int(str(N)[i]) return answer 모범 답안 def solution(number): if number < 10: return number return (number % 10) + solution(number // 10) 1. 재귀를 사용했다. 2. 1..