안녕하세요. 이번 포스팅에서는 Py.CheckiO 의 Elementary 레벨에 있는 Max Digit 문제풀이를 해보겠습니다.
주의:
제 답이 최고/최적화된 답이 아닐 수 있으며, 해결하는 것에만 집중한 답이기 때문에 좀 더 나은 방법이나 해석이 있으시다면 댓글 부탁드립니다.
0. Max Digit 문제 내용
Elementary 레벨에서 10번째 문제인 Max Digit 문제입니다.
하나의 정수가 주어졌을 때, 가장 큰 자릿수를 찾는 문제네요.
1. Max Digit 풀이
max_digit 함수에 주어지는 number 값 중에서 가장 큰 자릿수를 찾아야합니다.
알고리즘을 간단하게 요약하면
주어진 수를 10으로 나눠가며(반복) 나머지값(% 연산자)들끼리 비교하면 가장 큰 자릿수(max 값) 을 얻을 수 있다.
'%' 연산자를 쓰면 number를 10으로 나눴을 때의 나머지를 구하는 방법으로 1의 자릿수 부터 n의 자릿수 까지 올라가며 구할 수 있습니다.
우선 number 값이 0이 들어올 때는 따로 예외처리를 위해 number==0 인 경우를 if 문으로 따로 만들어 놨습니다.
0이라는 값이 예외처리가 되었기 때문에 일반적인 값이 들어왔을 때 max 값이 될 수 있는 최소값은 1이 됩니다.
(0, 00, 000 이라는 수는 없으므로)
max 변수에 1을 대입하여 이 값을 각 자릿수마다 비교하게 됩니다.
while 반복문에서 number 의 값이 0보다 클 때까지 반복을 걸어두면 1의 자리에서 10으로 나눠서 1보다 아랫값이 될 때, 루프에서 탈출하게 됩니다.
중간에 달아놓은 print문은 루프 과정에서의 number와 max 값을 보기 위함이고
output 창을 보시면
1번째 루프 - number : 52, max : 2
2번째 루프 - number : 5 , max : 5
의 값으로 매 루프마다 number 값은 한자리수 씩 없어지고 max 값은 자릿수에서의 최대치가 대입되며 진행되는 것을 확인할 수 있습니다.
본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
댓글