알고리즘/코드워

[python]Shortest Word

(ㅇㅅㅎ) 2020. 11. 7. 00:43
728x90
반응형

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()

설명보기

: 문자열을 나누어주는 함수입니다. 괄호 안에 아무 값도 넣지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어줍니다. 만약 특정값으로 문자열을 나누고 싶을 경우 괄호 안에 특정한 값을 넣어주면 됩니다.

split 사용 예시
split 사용 결과값

이것을 words라는 리스트 변수에 저장했습니다. 

 

그다음 word_length라는 비어있는 리스트 변수를 생성했습니다.

for문len을 이용하여 word_length리스트에 단어의 길이를 추가했습니다.

 

len()

설명보기

: 리스트에 들어있는 원소 개수, 리스트의 크기를 알 수 있는 함수입니다. 문자열의 길이 또한 알 수 있습니다.

len 사용 예시
len 사용 결과값

 

단어들 중 최솟값을 찾아야 하는 문제로 최솟값을 찾기 위해서 min을 이용했습니다.

 

min()

설명보기

: 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수입니다. 문자열에 사용하게 된다면 각각의 문자를 ASCII 값으로 인식하여 최솟값을 돌려줍니다.

min 사용 예시

 

min 사용 결과값

 

  반대의 개념으로 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