728x90
LeetCode에서 1번 문제를 시작하였다.
오랜만에 코딩을 시작하기도 하고, 아직 실력도 많이 부족해서 Easy 난이도의 문제를 선택해서 풀기로 했다.
문제는 아래 링크에서 확인 가능하다.
문제를 요약하면, 리스트 nums 와 int target이 주어질 때,
target을 nums 내에 존재하는 수 중 두 개의 합으로 만들 수 있을 때
해당하는 수의 index값을 리스트 형태로 출력하면 된다.
예시로 nums=[2,7,11,15] 이고 target=9 일 때 결과값은 [0,1] 이 나오면 되는 것
나는 이를 Python3로 다음과 같이 해결했다.
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
result=[]
i=0
for i in range(len(nums)):
j=i+1
while j<len(nums):
if target-nums[i]==nums[j]:
result.append(i)
result.append(j)
return result
break
else:
j+=1
i+=1
이러한 코드는 좋지 못한 시간 효율이 나왔다.
for문에다 while문을 넣어서 그런 거 같다.
잘 푼 사람들을 보니 dictionary를 사용하여 해결하였다.
dictionary에 nums 각 값을 key, Index를 Value로 추가하여
만약 target-nums[i]가 dictionary value에 존재한다면 value값과 현재 i 값을 출력하는 방식이다.
처음에는 이중 for문으로 구현하려했는데, for 안에 존재하는 for문에서 변수 j 처리를 잘 못해서
원하는 만큼 for문이 반복되지 않았다.
열심히 연습해야할 것 같다.
728x90
반응형
'Code > LeetCode' 카테고리의 다른 글
[LeetCode] 20.Valid Parentheses (Easy/Python) (0) | 2022.09.02 |
---|---|
[LeetCode] 13. Roman to Integer (Easy/Python) (0) | 2022.08.31 |
[LeetCode] 9.Palindrome Number (Easy/Python3) (0) | 2022.08.30 |
[LeetCode] LeetHub를 이용한 GitHub 자동 업로드 (0) | 2022.08.27 |
[LeetCode] LeetCode를 이용한 코딩 문제 해결 능력 기르기 (0) | 2022.08.26 |