[code-kata] 1주차day4-5

dream.log·2021년 7월 23일
3

Algorithm

목록 보기
2/2

코드카타 1주차 4,5일 코드카타 리뷰를 해보고자 한다!
첫 주에 좋은 짝꿍을 만나 많은 것을 배우고,
새로운 시각을 익힐 수 있었던 듯 하다.
문제를 내 힘으로 풀어내는 그날까지,,,,!

[day 4]

[해답]

  • 첫번째 풀이
def same_reverse(num):

  if str(num)[::-1] == str(num) :
    return True

  else:
    return False  
  • 두번째 풀이
def same_reverse(num):
return True if str(num) == str(num) [::-1] else False 

✔️ 풀이 방식

둘쨋날 풀었던 뒤집기 문제와 비슷하다는 생각이 들어
그 코드를 활용해 첫번째 풀이를 마쳤다. 그 공식을 활용하면 좋겠다는 힌트를 짝꿍님께서 주셨지만..
변수를 지정하여 풀이를 하려고 했던 나는 결국 해결을 하지 못했다. str 형식인 num을 거꾸로 치환한 값이 원래의 str과 같다면 true, 아니라면 false를 반환한다는 비교적 간단한!? 풀이를 진행했다.
첫번째 코드 완성 후, 더욱 간결한 풀이를 고민했던 짝꿍님이 작성해주신 두번째 코드. 첫번째 코드를 간결하게 한줄로 줄여 가독성을 높였다.

[day 5]

[해답]

import re

def get_prefix(strs):
    x = ''
    strs.sort(key=len)
    if strs == []:
      return x
    elif strs.count(strs[0]) == len(strs):
      return strs[0]
    else:
      for i in range(len(strs[0])):
        for j in strs[1:]:
          if re.match(strs[0][:i],j[:i]):
            x = strs[0][:i]
          else:
            break
      return x

✔️ 풀이 방식

와, 완성하는데 시간이 무척 오래걸렸다..! 간단한 문제라고 생각했는데, 계속 오류가 발생하였다.
첫날은 빈 문자열을 만들고, 가장 짧은 문자열을 찾아 반복하고, 이 내용을 길이순으로 정렬을 한다. 그 후 첫번째 단어의 길이만큼만 i를 반복하는 방식까지 생각하여 식으로 구현해냈다.
(짝꿍 종규님 리스펙투...)
고민하던 중, sorted까지 추가해서 코드를 작성했지만 정답과 가까워지지 않았다...ㅠㅠ
4일차 문제를 빨리 풀어 4일차에 고민을 했지만
해결이 되지 않아 오늘 한번 더 문제를 풀기로 했고, westagram 에서도 사용되는 정규표현식을 활용했다.

이중for문 내부 if문의
re.match(strs[0][:i],j[:i]: x = strs [0][:i] 를 통해
strs를 순차적으로 i의 길이만큼 나열하고,
j와 한번 더 비교를 해주었다.
생각을 하는 것도 쉽지 않지만, 생각한 내용을 코드로 작성하는 것이 얼마나 어려운가 다시 한 번 느낄 수 있었던 하루....

벌써 첫주가 끝났다.
알고리즘 문제를 보면 손도 대지 못 했던 내가,
첫 주 좋은 짝꿍을 만나 어떠한 식으로 코드를 짜면 좋을지? 구조화를 할 수 있게 되었다.
(아직 코드에 맞춰 짜는 것은 어렵지만...)
그래도 생각의 범위를 확장했다는 것에 큰 의의를 두며!
다음주엔 더욱 발전하는 내가 되기를! 🙂

profile
한 걸음, 한 걸음 포기하지 않고 발전하는 Backend-developer 👩🏻‍💻 노션 페이지를 통한 취업 준비 기록과 회고를 진행하고 있습니다. 계획과 기록의 힘을 믿고, 실천하고자 합니다.

2개의 댓글

comment-user-thumbnail
2021년 7월 23일

여기다가 정규표현식을 쓸 수 있어요?! 대박~!

1개의 답글