일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 선그래프
- Join
- Matplotlib
- 노마드코딩
- 프로그래머스
- 파이썬
- python
- 알고리즘 스터디
- pandas
- 정보처리기사 c언어
- 데이터시각화
- MySQL
- openCV
- 가상환경
- aws jupyter notebook
- queue
- 코딩테스트
- String Method
- NumPy
- Stack
- Algorithm
- dataframe
- 자료구조
- 알고리즘스터디
- 알고리즘
- javascript
- 백준
- type hint
- Selenium
- programmers
- Today
- Total
조금씩 꾸준히 완성을 향해
[Algorithm] 기초 문제 / 자릿수의 합 본문
▶ 문제
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요.
▶ 입력 설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다.
▶ 출력 설명
자릿수의 합이 최대인 자연수를 출력한다. 자릿수의 합이 같을 경우 입력순으로 먼저인 숫자 를 출력합니다.
▶ 입력
3
125 15232 97
▶ 출력
97
▷ 내가 짜본 코드
import sys
sys.stdin=open("input.txt", "r")
n = int(input())
a = list(map(int, input().split()))
def digit_sum(x) :
b = 0
x = str(x)
for i in x:
b += int(i)
return b
max = 0
for i in a :
plus = digit_sum(i)
if plus > max:
max = plus
num = i
print(num)
자리수 합하는 함수 만들기가 정말 힘들었다.
머리 속에 로직은 그려졌는데 그게 코드로 구현이 안돼서 이틀간을 고민했다.
그래도 감격스럽게도 완성을 했다는 사실!!! ㅠㅠ
자리수를 합하기 위해서는 숫자가 문자열로 취급이 되야 한다는 게 가장 먼저 든 생각이었다.
그래서 숫자를 문자열로 바꾸어 반복문을 돌린 후, 그걸 다시 숫자로 바꾸어 더하였다.
최대값 구하는 부분은 몇 번 반복한 패턴이라 수월하게 할 수 있었다.
▷ 예시 코드
import sys
sys.stdin=open("input.txt", "r")
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
res=0
max=-2147000000
for x in a:
tot=digit_sum(x)
if tot>max:
max=tot
res=x
print(res)
예시 코드에서는 데이터 타입을 바꾸는 번거로움을 확실히 줄여주는 방법을 사용하였다.
나머지와 몫을 이용해 자리수를 각각 떼서 더해주면 간단히 구현이 된다.
솔직히 이런 수학적인 계산법은 따로 배우지 않는 한 스스로 생각해 내기가 정말 어려운 것 같다.
while 문에 각각 숫자를 넣으며 따라가니 이해가 되긴 했다. 이 부분은 익숙해 지는 수밖에 없을 듯!
또 for문을 많이 쓰다보니 while문에 대한 이해와 감각이 상대적으로 부족한 것 같다.
더 많은 예제를 접해봐야 겠다!
'DataStructure & Algorithm > 문제풀이' 카테고리의 다른 글
[Algorithm] 기초 문제 / 뒤집은 소수 (0) | 2022.09.05 |
---|---|
[Algorithm] 기초 문제 / 소수(에라토스테네스 체) (0) | 2022.08.31 |
[Algorithm] 기초 문제 / K번째 큰 수 (0) | 2022.08.27 |
[Algorithm] 기초 문제 / K번째 수 (0) | 2022.08.27 |
[Algorithm] 기초 문제 / K번째 약수 (0) | 2022.08.26 |