[CodeKata] Week1 - Day4,5

📌 CodeKata - Week1, Day4

문제

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

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

예를 들어,

num = 123
return false 
=> 뒤집은 모양이 321 이기 때문
num = 1221
return true 
=> 뒤집은 모양이 1221 이기 때문
num = -121
return false 
=> 뒤집은 모양이 121- 이기 때문
num = 10
return false 
=> 뒤집은 모양이 01 이기 때문

풀이1

def same_reverse(num):
    str_num = str(num)
    r_str_num = str_num [::-1] #뒤에서부터 출력
    if str_num == r_str_num:
        return True
    else:
        return False

풀이2

def same_reverse(num):
    return str(num)[::-1] == str(num)

➡️ 문자열을 뒤에서부터 출력해서 기존 str과 거꾸로출력한 str을 비교했다. 풀이2는 그 코드를 한줄로 만든 코드이다.

📌 CodeKata - Week1, Day5

문제

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

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

예를 들어

strs = ['start', 'stair', 'step']
return은 'st'
strs = ['start', 'wework', 'today']
return은 ''

풀이

def get_prefix(strs):
  if len(strs) == 0:
    return ''
  
  prefix = ''
  strs.sort()
  for i in range(len(strs[0])):
    if strs[0][i] == strs[-1][i]:
      prefix += strs[0][i]
    else:
      break
  return prefix

➡️ 만약 맨 처음 빈 문자열이 들어오면 빈 문자열을 리턴해준다. 그리고 prefix라는 빈 문자열을 만든다. 그리고 리스트를 정렬해준다. 만약 리스트를 정렬하면 리스트의 안의 문자열들은 알파벳순으로 정렬이 되므로 가운데는 비교해줄 필요가 없고 처음과 끝만 비교해주면 된다. 따라서 for문을 돌때 첫번재 문자열을 기준 첫번째 문자열과 마지막 문자열의 배열을 하나씩 비교해가면서 같으면 prefix에 추가해주고 그렇지 않으면 멈춰서 prefix를 리턴한다.

좋은 웹페이지 즐겨찾기