*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하게 하는 프로그램을 작성하세요.
(자릿수의 합을 구하는 함수 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요.)
풀이
• 내 풀이
import sys
input = sys.stdin.readline
N = int(input())
nums = list(input().split())
result = list()
def digit_sum(x):
count = 0
for j in nums[x]:
count += int(j)
result.append(count)
for i in range(N):
digit_sum(i)
print(nums[result.index(max(result))])
• 답안 (정수로 접근)
N = int(input())
a = list(map(int, input().split()))
def digit_sum(x):
sum = 0
while x > 0:
sum += x%10
x = x//10
return sum
max = -1e9
for x in a:
tot = digit_sum(x)
if tot > max:
max = tot
res = x
print(res)
• 답안 (문자열로 접근)
N = int(input())
a = list(map(int, input().split()))
def digit_sum(x):
sum = 0
for i in str(x):
sum += int(i)
return sum
max = -1e9
for x in a:
tot = digit_sum(x)
if tot > max:
max = tot
res = x
print(res)
- 정수로 접근하는 방법과 문자열로 접근하는 방법 2가지가 있는데, 나는 문자열로 접근하는 것을 선택했다.
- 답안은 입력받을 때 int()로 변환해서 리스트에 저장하고, 이를 다시 str()로 변환하고 다시 int()로 변환한다.
→ 답안의 int() → str() → int() 과정을 하나라도 줄이고자,
나는 애초에 문자열로 입력받아서 digit_sum() 함수에서 for문을 돌릴 때, int()로 변환해서 접근했다.
- 나는 리스트의 메서드인 max()를 활용해서 해당 index를 알아내 답을 구했다면, 답안은 변수에 저장하고 해당 값이 최대값 변수인 max의 값과 비교해서 답을 구한다.
- 굳이 리스트를 2개를 사용하지 않고도 해결할 수 있다는 것을 답안을 통해 알게 되었다.
'💻 코딩테스트 > 파이썬 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 뒤집은 소수 (0) | 2023.04.24 |
---|---|
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 소수의 개수 (에라토스테네스 체) (0) | 2023.04.24 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 정다면체 (0) | 2023.04.07 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 대표값 (0) | 2023.04.07 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - K번째 큰 수 (0) | 2023.04.06 |