[code-kata] day1~3

dream.log·2021년 7월 21일
1

Algorithm

목록 보기
1/2
post-thumbnail

3주차가 되고, 코드카타를 시작했다.
문제를 보고 수학적으로 사고하여 식으로 도출하는 연습이 필요한 내게 많은 도움이 될 듯하다.

하나의 문제를 보고, 해결하는 방식이 어떻게 다른지..!
배울 수 있었다!

[day 1]

[풀이]

def two_sum(nums, target):
    # 아래 코드를 작성해주세요.
   
   i = 0
   for j in nums:
    i = j
    if (target - i) in nums :
      return [ nums.index(i),nums.index(target - i)]


변수를 한 개 지정하여 int 형임을 알려준다! i = 0
j라는 변수를 한 개 더 만들어 준 후, for문을 활용한다.
이중 for문이 되지 않게끔 if 조건문도 사용해준다.
j가 숫자 안에 있을 때 i = j . j도 int형이고,
target에서 0을 뺀 값이 있는가? target - i
를 조건문으로 걸어주고, return을 통해 index를 도출해낸다.

🤔 내 생각

: if문으로 조건을 걸어줘야겠다...! 까지 생각하고
return nums.index 으로 index를 뽑아내야겠다.. 방법을 고민하고 있던 내게, target에서 i를 뽑아서 원하는 값을 구현해내는 방식은 매우 신선하게 다가왔다..!
발상의 전환 같은 느낌!
깔끔하게 문제를 해결해나가시는 짝꿍님을 보며, 많이 배웠다!


[day 2]

[풀이]

def reverse(number):
  # 여기에 코드를 작성해주세요.

  x = str(number)
  if x[0] == "-" :
     x = x.lstrip('-') + "-"
  return int(x[::-1])


: x가 str임을 먼저 정의해주고, 조건문을 사용한다.
x = str(number) 조건을 걸어준다.
x의 첫번째 문자열이 -인 경우 (같음을 의미하니 ==)
왼쪽에 있는 -를 없애준다.
lstrip 을 활용! 잘라낸 후 다시 붙여준다.

x = x + lstrip('-')
x = x+ "-" 

두 줄이 될 수 있었던 코드를
x = x.lstrip('-') + "+" 한 줄로 깔끔하게 정리해준다.
return엔 정수를 거꾸로 반환한다는 의미를 적어준다.
[::-1] 을 통해 뒤집어 반환한다를 알림.

🤔 내 생각
: 변수를 지정하고, 적절히 꺼내써야 깔끔한 문제풀이가 될 것 같다!
if number = x 라고 지정하려고 했지만,
조건문 사용 이전에 변수를 지정해준 후 진행하는 것이 수월하고, -일 경우 어떻게 구현하는가? 에서 고민을 많이 했는데 -를 뺀 후 다시 더해준다!라는 좋은 발상을 배웠다.


[day 3]

[풀이]

def get_len_of_str(s):
    a = ""
    b = []
    for i in range(len(s)):
      if (s[i] in a):
       b.append(a)
       a = ""
       a = a + s[i]
      else :
        a = a + s[i]
    b.append(a)
    return len(max(b, key=len))


빈 문자열 a와 빈 리스트 b를 만들어준다.
for과 if문을 활용해 풀이한다.
s라는 문자열의 길이를 찾는데,
첫번째 원소를 뽑아 a와 중복되지 않으면 else로 이동하여 하나씩 더한다. 겹치지 않으면 계속 더해준다. 같은 원소를 만나면 b에 append한다.
return시, b의 최대 길이를 반환한다.

🤔 내 생각
코드카타 3일차. 오늘이 가장 어려운 문제였다.
길이이니 len, 최대 길이이니 max를 사용해야겠다고 생각했고,
변수를 미리 지정해야 한다는 것을 알았으니 i = str 으로 지정을 해두었다.
중복되지 않은 값을 출력하니 list를 set화 하면 되지 않으려나? 했는데 set을 사용하면 세번째 조건이 충족되지 않는다는 것을 짝꿍님을 통해 알게되었다.

좀 더 간결하게 풀기 위해 방법을 고민하시던 종규님 덕분에
간단하게 코드를 작성할 수 있었다!


코드카타를 해보니 아직 갈 길이 멀다는 것을 한번 더 느꼈다 🥺
수학적 사고가 익을만큼 생각하는 것을 한문장씩 수식화해보고
문법에 맞게 고쳐보고, 발전시켜보자!

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

0개의 댓글