two sum, longest substring without repeating characters

박수빈·2021년 12월 27일
0

leetcode

목록 보기
1/51

Two sum (array)

문제

  • 정수 nums와 target이 주어질 때, 더했을 때 target이 되는 num의 인덱스를 출력
  • 중복 사용 안됨. 답은 오직 하나
  • 출력 순서 무관

풀이

  1. 정렬 한 후에 투포인터로?
    • 데이터 크기가 그렇게 크지 않고, index를 리턴하는거라 정렬이 적절지 못함
  2. 브루트포스로 모두 검사해보자
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        answer = []
        length = len(nums)
        for i in range(length):
            for j in range(i+1, length):
                if nums[i] + nums[j] == target:
                    answer.extend([i,j])
        return answer

결과

Longest Substring Without Repeating Characters (String)

문제

  • 문자열 s가 주어질 때, 가장 긴 중복이 없는 부분 문자열의 길이

풀이

  • longest substring을 담는 substr
  • s를 순회하면서 substr에 없는 문자일 시 뒤에 더함
  • 이미 존재할 경우 substr에서 처음~중복문자를 제거하고, 뒤에 새 문자 더해서 반복
  • substr이 truncate되기 전에 길이가 최대인지 확인. 최대일 경우 길이 저장.
    def lengthOfLongestSubstring(self, s: str) -> int:
        substr = ""
        longestLen = 0
        for letter in s:
            if letter not in substr:
                substr += letter
            else:
                ind = substr.index(letter)
                if len(substr) > longestLen:
                    longestLen = len(substr)
                substr = substr[ind+1:]
                substr += letter
        if len(substr) > longestLen:
            longestLen = len(substr)
        return longestLen

결과

  • 첫 시도에 반복문 종료 이후에substr이 가장 길 경우를 고려하지 못함
  • for문 이후에 if문을 한번 더 하는 방식으로 해결
profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글