알고리즘/코드워

[python]Largest 5 digit number in a series

(ㅇㅅㅎ) 2020. 4. 25. 19:27
728x90
반응형

https://www.codewars.com/kata/51675d17e0c1bed195000001/train/python

 

Codewars: Train your coding skills

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이 문제는 길이가 5 이상인 숫자(예를 들어 12345, 123456 등)를 5개씩 쪼개서 최댓값을 반환하면 되는 문제입니다.

 

예를 들어서 1234567898765일 경우 아래와 같이 쪼개어볼 수 있습니다.

12345, 23456, 34567, 45678, 56789, 67898, 78987, 89876, 98765

이 중 가장 큰 값이 98765를 반환하면 됩니다.

 

문제풀이를 보고 싶으시면 더보기를 누르시면 됩니다.

더보기

Largest 5 digit number in a series

이 문제는 처음에는 숫자로 접근하기보다 문자로 접근하여 5개씩 잘라보았습니다.

우선적으로 숫자를 문자로 바꾸려면 str를 사용하면 됩니다.

number = 123456
str_number = str(number)
# type은 변수의 타입을 리턴해 줍니다.
print(str_number, type(str_number))

결과

 

 

이 문자를 for문을 이용하여 5개씩 잘라보았습니다.

문자열[처음 위치:끝 위치]을 사용하면 문자열을 자를 수 있습니다.

number = 123456
str_number = str(number)
for i in range(len(str_number)):
    print(str_number[i:i+5])

결과

결과를 살펴보면 길이가 5보다 작은 것들도 있습니다. if 문으로 이것을 처리해도 되지만 저는 이 값들을 리스트에 넣고 max를 사용하여 최댓값을 뽑아낼 것이기 때문에 따로 처리는 하지 않았습니다.

answer라는 리스트를 만들고 이 리스트에 5개씩 자른 값들을 넣어보겠습니다.

여기서 주의할 점은 숫자 형태로 변형시켜서 넣어야 합니다.(나중에 바꿔줘도 상관은 없습니다.)

number = 123456    
str_number = str(number)
answer = []
for i in range(len(str_number)):
    answer.append(int(str_number[i:i+5]))
print(max(answer))

결과

전체 코드

# My Code
def solution(digits):
    str_digits = str(digits)
    answer = []
    for i in range(len(str_digits)):
        answer.append(int(str_digits[i:i+5]))
    return max(answer)
 
if __name__=='__main__':
    print(solution(1234567898765))

 

반응형

'알고리즘 > 코드워' 카테고리의 다른 글

[python]SpeedCode #2 - Array Madness  (0) 2020.04.28
[python]Polish alphabet  (0) 2020.04.26
[python]Sudoku Solution Validator  (0) 2020.04.24
[python]Get Planet Name By ID  (0) 2020.04.24
[python]Total amount of points  (0) 2020.04.22