프로그래머스 Level1 : 자릿수 더하기
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | answer |
---|---|
123 | 6 |
987 | 24 |
입출력 예 설명
입출력 예 #1 문제의 예시와 같습니다.
입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
해설
한 줄로 풀 수 있다.
1
2
def solution(n):
return sum(map(lambda x: int(x),list(str(n))))
좀 더 간략화한 다음 풀이도 있다.
1
2
def solution(n):
return sum(map(int,str(number)))
재귀 함수를 이용한 풀이도 있었다.
1
2
3
4
def solution(n):
if number < 10:
return number;
return (number % 10) + sum_digit(number // 10)
프로그래머스 Level1 : 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
---|---|
12345 | [5,4,3,2,1] |
해설
위 문제랑 유사하다.
1
2
def solution(n):
return list(map(int, reversed(str(n))))
프로그래머스 Level1 : 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
해설
계속 비슷한 유형인듯
1
2
def solution(n):
return int(''.join(sorted(str(n), reverse=True)))
프로그래머스 Level1 : 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n | return |
---|---|
121 | 144 |
3 | -1 |
입출력 예 설명
입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
해설
구현은 간단했다.
1
2
3
4
5
6
import math
def solution(n):
k = math.sqrt(n)
answer = (k+1)**2 if k.is_integer() else -1
return answer
sqrt
대신에 **.5
와 and
, or
로 해결한 사람도 있었다.
1
2
def solution(n):
return n == int(n**.5)**2 and int(n**.5+1)**2 or -1
Leave a comment