Two sum (array)
문제
- 정수 nums와 target이 주어질 때, 더했을 때 target이 되는 num의 인덱스를 출력
- 중복 사용 안됨. 답은 오직 하나
- 출력 순서 무관
풀이
- 정렬 한 후에 투포인터로?
- 데이터 크기가 그렇게 크지 않고, index를 리턴하는거라 정렬이 적절지 못함
- 브루트포스로 모두 검사해보자
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문을 한번 더 하는 방식으로 해결