728x90
반응형
https://www.codewars.com/kata/51675d17e0c1bed195000001/train/python
이 문제는 길이가 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 |