[알고리즘 문제풀이] 코드카타 3

나른한 개발자·2022년 1월 16일
0

문제풀이

목록 보기
3/13

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

  • 입력: 문자열
  • 출력: 중복되지 않은 알파벳 길이 (숫자 반환)

풀이과정

  • 반복문을 돌며 문자가 중복되는지 검사한다.
  • 중복되지 않는다면 compare 에 추가한다.
  • 중복된다면 results리스트에 추가한다.
  • results 내 원소 중 가장 길이가 긴 원소의 길이를 반환한다.

코드

def get_len_of_str(s):
  compare =""
  results = []
  s_len = len(s)

  if len(s) == 0: # 빈 문자열인 경우 0 반환
    return 0

  for i in range(s_len):
    if s[i] in compare:	# 중복된다면 results에 추가
      results.append(compare)
      compare = s[i]	#다음 반복에 비교하기 위해 현재 원소로 compare 초기화
    else:
      compare += s[i]	# 중복되지 않는다면 해당 원소를 추가
      if i == s_len-1: # 중복되지 않고 마지막 원소라면 results에 추가
        results.append(compare)

    i += 1

  return len(max(results, key=len)) # 길이가 가장 긴 문자열의 길이 반환

print(get_len_of_str('sttrg')) # 결과: 3

+)

test case 중 빈 문자열의 입력이 있어, 빈 문자열인 경우 중복 검사 없이 바로 0을 반환하도록 하였다.

그렇지 않으면 max() 함수에서 empty sequence 라고 에러가 난다.

profile
Start fast to fail fast

0개의 댓글