www.codewars.com/kata/57cebe1dc6fdc20c57000ac9/train/python
Codewars: Achieve mastery through challenge
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.
www.codewars.com
이 문제는 문장 중에서 가장 짧은 단어의 길이를 구하는 문제입니다.
우선적으로 문자열을 단어로 분리하기 위해 split을 이용하였습니다. s는 입력 문자열 변수입니다.
split()
: 문자열을 나누어주는 함수입니다. 괄호 안에 아무 값도 넣지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어줍니다. 만약 특정값으로 문자열을 나누고 싶을 경우 괄호 안에 특정한 값을 넣어주면 됩니다.
![](https://blog.kakaocdn.net/dn/TjeVQ/btqMM5gFrWr/nGSA8mjHZNrk5VjGBN4J2K/img.png)
![](https://blog.kakaocdn.net/dn/oEtO5/btqMJEYyLTd/ntVl8bW2o3mtlkWkZHhTN0/img.png)
이것을 words라는 리스트 변수에 저장했습니다.
그다음 word_length라는 비어있는 리스트 변수를 생성했습니다.
for문과 len을 이용하여 word_length리스트에 단어의 길이를 추가했습니다.
len()
: 리스트에 들어있는 원소 개수, 리스트의 크기를 알 수 있는 함수입니다. 문자열의 길이 또한 알 수 있습니다.
![](https://blog.kakaocdn.net/dn/UpeJw/btqMM4hIOgp/QgGk4CdTXwv28QloCEkE9K/img.png)
![](https://blog.kakaocdn.net/dn/pnzO1/btqMMG2qK5q/OeI9gAqgtezlgqfYPJF9r0/img.png)
단어들 중 최솟값을 찾아야 하는 문제로 최솟값을 찾기 위해서 min을 이용했습니다.
min()
: 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수입니다. 문자열에 사용하게 된다면 각각의 문자를 ASCII 값으로 인식하여 최솟값을 돌려줍니다.
![](https://blog.kakaocdn.net/dn/yvjQ9/btqMM5nnh1N/gupqOrIQ9RTYwmcx9Kcxzk/img.png)
![](https://blog.kakaocdn.net/dn/bFDwwh/btqMN4nYalX/aU9yb0azfOrpNDtuTtj58k/img.png)
반대의 개념으로 max()라는 함수가 있습니다.
이 모든 과정을 합하면 다음과 같습니다.
위의 과정들을 한 줄로 줄일 수 있습니다. 하지만 코드가 짧다고 해서 가장 좋은 코드라고 생각하지 않습니다.
그래도 한 줄 코드가 궁금하신 분이 계신다면 더보기란을 클릭해주시면 됩니다.
한 줄 코드 과정
words 변수를 생성하지 않고 for문에 s.split()를 바로 넣어서 사용할 수 있습니다.
![](https://blog.kakaocdn.net/dn/c6SfF7/btqMMG2qYHF/n6GFw1dB94FmVi18K0d8UK/img.png)
for문도 한 줄로 표현이 가능합니다.
![](https://blog.kakaocdn.net/dn/SpCDS/btqMMGg5GW6/ZD71G8WtYTDoNf7nYxOQ6K/img.png)
그리고 word_length라는 변수를 만드는 대신 바로 min 함수에 for문을 넣을 수 있습니다.
![](https://blog.kakaocdn.net/dn/CQChI/btqMOyPT8vA/hUSWiTj1VgjHnglbzKvkek/img.png)
오늘의 여담
사실 더보기란 위의 코드는 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 |