자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이
자릿수의 합
얄루몬
2022. 6. 30. 18:25
문제
- n개의 숫자를 입력 받은 뒤 각 숫자의 자릿수를 더한 값이 가장 큰 값을 구하는 문제이다.
- digit_sum(x) 함수를 작성해서 문제를 풀 것
- 예
- 123 789 99 세 숫자가 있을 때 가장 큰 수는?
- 정답
- 789
문제 풀이 - 1
import sys
sys.stdin = open("input.txt", "r")
def digit_sum(x):
sum = 0
while x > 0:
sum += x % 10
x = x//10
return sum
n = int(input())
a = list(map(int,input().split()))
max = -2147000000
for i in a:
now = digit_sum(i)
if now > max:
max = now
result = i
print(result)
- 10으로 나눈 값을 더해주면 자릿수의 합이 될 것이고 자릿수의 합을 구하고 난 뒤엔 다음 계산을 위해 10으로 나눈 몫을 사용해준다.
- 그 후 작성한 함수를 사용해 max값과 비교하며 최댓값을 구한 뒤 해당 숫자를 답으로 넘겨준다.
문제 풀이 - 2
import sys
#sys.stdin = open("input.txt", "r")
def digit_sum(x):
sum = 0
for i in str(x):
sum += int(i)
return sum
n = int(input())
a = list(map(int,input().split()))
max = -2147000000
for i in a:
now = digit_sum(i)
if now > max:
max = now
result = i
print(result)
- 위의 매커니즘과 동일하지만 digit_sum(x) 함수 부분에서 int형인 x를 str로 바꿔서 for문으로 하나씩 접근하는 방식을 사용 이때는 sum 함수에 해당 자릿수를 더하기 위해서 형변환이 필수다!!