프로그래머스 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대신에 **.5and, or로 해결한 사람도 있었다.

1
2
def solution(n):
    return n == int(n**.5)**2 and int(n**.5+1)**2 or -1

Leave a comment