TIL30 | CodeKata 중복되지 않은 알파벳 중 제일 긴 단어, 뒤집은 모양이 같은 숫자 찾기, ⭐️공통된 시작 단어 찾기

2021. 10. 22. 17:17언어/Python

반응형

CodeKata Week 1

 

문제 3

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)

def get_len_of_str(s):
  # 구현

input

str = "abcabcabc"

output

3

 

나의 풀이

def get_len_of_str(s):
  str = []
  length = 0

  for i in range(len(s)):
    if s[i] not in str:
      str.append(s[i])
    else:
      str = [s[i]]
    print(str)
    length = max(length, len(str))
  return length

 

문제 4

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.

num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)

def get_len_of_str(s):
  # 구현

input

def same_reverse(123)
def same_reverse(1221)
def same_reverse(10)

output

false 
true
false

 

나의 풀이

def same_reverse(num):
    txt       = str(num)
    half_len  = len(txt) // 2

    front   = txt[:half_len]
    end     = txt[half_len :][::-1]

    if len(front) != len(end):
      end = end[:len(end)-1]

    return True if front == end else False  

 

📌️ 문제 5

Solution 풀이 보면서 효율적인 알고리즘에 대해 생각하기

 

strs은 단어가 담긴 배열입니다.

공통된 시작 단어(prefix)를 반환해주세요.

def get_prefix(strs):
  # 구현

input

get_prefix(['start', 'stair', 'step'])
get_prefix(['start', 'wework', 'today'])

output

'st'
''

 

나의 풀이

def get_prefix(strs):
  if len(strs) == 0 : 
    return ''

  prefix = ''
  short = min(strs, key=len)

  for step in range(1, len(short)+1):
    prefix = short[:step]
    for str in strs:
      if str.startswith(short[:step]) == False:
        prefix = short[:step-1]
        return prefix

  return prefix

👍️ 구선생 Solution

def solution_get_prefix(strs):
  if len(strs) == 0:
    return '' 
  res = ''
  strs = sorted(strs)
  for i in strs[0]:
    if strs[-1].startswith(res+i):
        res += i
    else:
        break
  return res
반응형