파이썬 알고리즘 : two-sum

반복문

2024년 5월 9일 알고리즘 문제풀이

문제

난이도

Easy

코드

1차시도

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution:
    def twoSum(self, nums, target: int):
        board = dict()
        idx_arr = dict()
        answer = []
        for i in range(len(nums)):
            if nums[i] not in board:
                board[nums[i]] = 1
            else:
                board[nums[i]] += 1

        for i in range(len(nums)):
            if nums[i] not in idx_arr:
                idx_arr[nums[i]] = [i]
            else:
                idx_arr[nums[i]].append(i)
        for i in range(-target,target+1,1):
            if i in board and target-i in board:
                if i != target-i:
                    answer = [idx_arr[i][0],idx_arr[target-i][0]]
                    break
                else:
                    if board[i] >= 2:
                        answer = [idx_arr[i][0], idx_arr[i][1]]
                        break
        return answer

다 조회하면 시간이 초과될 것 같아, dictionary를 이용하려 했다. target이 0일 떈 조합을 찾는 반복문이 제대로 작동하지 않아 오답처리되었다.

1
2
3
4
5
6
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]: 
        for i in range(len(nums)):
            for j in range(len(nums)):
                if i != j and nums[i] + nums[j] == target:
                    return [i,j]

바로 맞췄다. 괜히 어렵게 풀었나..?