Codekata #3

Kiyong Lee·2021년 9월 15일
0

Codekata #3

1. 문제


2. 내생각

맨 처음 풀 때 결과론적으로 10줄 남짓한 걸 30줄을 써서 풀었다.

문자열을 배열로 바꿔서 비교하고 그걸 다시 문자열로 바꿔서 배열로 넣어주고
그 배열의 길이를 찾는..

2중for문 포함 반복문도 6~7번 돌렸는데, 안 푸는 것만도 못 해서

이전꺼는 제출도 안하고 지워버렸다.

생각해보니 너무 후회가 돼서 다음부터는 일단 제출하고 수정해야겠다


3. 풀이

코드카타 같이 푸는 짝궁님께서 다른 분이 푸신 걸 들으셨다고 했는데,

내용이 뭐였냐면 문자열들을 새로운 곳에 저장하고, 지우고 한다는 것이었다.

그러면 반복문 한 번에 되기 때문에 엄청 획기적이었다는 ..

그래서 문자열을 담을 리스트와, 그 때의 길이를 담을 리스트

두 개를 만들게 되었다.

풀고 나니, 문자열 안받는거도 테스트케이스에 있어서 부랴부랴 추가했다

진짜 이 간단한 코드만들려고 3시간동안 뻘짓했는데,

슬라이싱도 해보고 replace도 해보고 메소드란 메소드는 다 찾아봤었다

이거도 안돼 저거도 안돼.. 이것저것 다 고민했던 내 자신이 정말 바보 같았다

def get_len_of_str(s):
  #문자열을 안 받는 경우가 있기 때문에, 그걸 위한 조건문
  if s == '' : return 0
  
  #n_list는 문자열에 대해 반복문을 돌리면서 저장할 리스트
  n_list=[]
  
  #그 때 n_list에 들어간 문자열의 길이를 저장할 리스트
  len_list=[]
  
  #문자열 s에 대해 반복문을 돌리며 v에 저장
  for v in s :
    #이 부분이 가장 놀랐던 부분인데, 문자열 중복을 확인하기 위한 조건이다
    #sttreg라면, 2번째 인덱스의 t는 존재하기 때문에 n_list에 추가 될 수 없고 리스트를 초기화
    #그러면 그 때의 n_list 길이를 len_list에 저장
    if v in n_list :
   
      #초기화를 위해 함수 clear()를 썼다.
      n_list.clear()
    
    #중복 후 새롭게 n_list에 저장되기 때문에 append를 해줘야 한다.
    n_list.append(v)
    
    #그 때의 n_list의 길이를 len_list에 저장하여 길이 중 가장 긴 걸 리턴
    len_list.append(len(n_list))
  return max(len_list)

4. 후기

나는 진짜 바보멍청이다

profile
ISTJ인 K-개발자

0개의 댓글