www.codewars.com/kata/57cebe1dc6fdc20c57000ac9/train/python
이 문제는 문장 중에서 가장 짧은 단어의 길이를 구하는 문제입니다.
우선적으로 문자열을 단어로 분리하기 위해 split을 이용하였습니다. s는 입력 문자열 변수입니다.
split()
: 문자열을 나누어주는 함수입니다. 괄호 안에 아무 값도 넣지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어줍니다. 만약 특정값으로 문자열을 나누고 싶을 경우 괄호 안에 특정한 값을 넣어주면 됩니다.
이것을 words라는 리스트 변수에 저장했습니다.
그다음 word_length라는 비어있는 리스트 변수를 생성했습니다.
for문과 len을 이용하여 word_length리스트에 단어의 길이를 추가했습니다.
len()
: 리스트에 들어있는 원소 개수, 리스트의 크기를 알 수 있는 함수입니다. 문자열의 길이 또한 알 수 있습니다.
단어들 중 최솟값을 찾아야 하는 문제로 최솟값을 찾기 위해서 min을 이용했습니다.
min()
: 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수입니다. 문자열에 사용하게 된다면 각각의 문자를 ASCII 값으로 인식하여 최솟값을 돌려줍니다.
반대의 개념으로 max()라는 함수가 있습니다.
이 모든 과정을 합하면 다음과 같습니다.
위의 과정들을 한 줄로 줄일 수 있습니다. 하지만 코드가 짧다고 해서 가장 좋은 코드라고 생각하지 않습니다.
그래도 한 줄 코드가 궁금하신 분이 계신다면 더보기란을 클릭해주시면 됩니다.
한 줄 코드 과정
words 변수를 생성하지 않고 for문에 s.split()를 바로 넣어서 사용할 수 있습니다.
for문도 한 줄로 표현이 가능합니다.
그리고 word_length라는 변수를 만드는 대신 바로 min 함수에 for문을 넣을 수 있습니다.
오늘의 여담
사실 더보기란 위의 코드는 8개월 전의 제가 만든 코드입니다.
이 간단한 문제를 풀기 위해서 저는 여러 사이트를 뒤져보면서 python에 익숙해지기 위해서 노력을 했었습니다. 저는 python을 codewar 문제를 풀면서 독학을 했기 때문에 어쩌면 더 헤매었을지도 모릅니다.
그러나 8개월 후의 저는 이 정도의 한 줄 코드는 금방 구성을 할 정도가 되었습니다.
물론 아직 갈길은 멀었다고 생각합니다.
하지만 앞으로 8개월 후의 제가 어떻게 성장할지 기대가 됩니다.
지금 내가 이 코드를 이해하지 못한다고 한 달 후의 내가, 6개월 후의 내가 이해 못할 것이라고 생각하지 마셨으면 합니다.
오늘 포기하는 사람이 한 달 후, 6개월 후가 없다고 생각합니다.
(물론 포기해도 상관없습니다. 코딩이 안 맞을 수도 있습니다. 자신이 더 좋아하는 것을 찾아서 하시면 됩니다. :D)
'알고리즘 > 코드워' 카테고리의 다른 글
[python]Grasshopper - Grade book (0) | 2020.11.23 |
---|---|
[python]Snail (0) | 2020.11.16 |
[python]Equal Sides Of An Array (1) | 2020.11.05 |
[python]Number of People in the Bus (0) | 2020.11.04 |
[python]Disemvowel Trolls (0) | 2020.11.02 |