본문 바로가기

알고리즘 문제/리트코드

LeetCode 1번 문제 : Two Sum python 풀이

https://leetcode.com/problems/two-sum/ 

 

1. 문제 파악

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.

 

정수 수 배열과 정수 목표가 주어지면 두 수를 합해 Target이 나올 때, 해당 두 숫자의 인덱스를 반환합니다.
각 입력에 하나의 해가 있다고 가정하고 동일한 요소를 두 번 사용하지 않을 수 있습니다.

2. 예시

 

Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

 

Example 2
Input: nums = [3,2,4], target = 6
Output: [1,2]

 

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

 

3. 풀이 코드 (브루스포트)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]

 

중복된 요소를 사용해선 불가하므로 내부의 for에서는 i를 제외한 요소에서 부터 시작합니다.

두개의 for 문을 돌다 합이 target이 있으면 인덱스 i와 j를 담아 return 합니다.

 

 

for i in range(len(nums)):
	comp = target - nums[i]
    test = nums[:i] + nums[i+1:]
    if comp in test:
    	a = test.index(comp) 
        return [i, a + 1 if a >= i else a]

 

해당 코드는 target에서 num1을 미리 빼서 num2를 마련합니다. 코드 내에서는 comp입니다.

이후 Python의 in을 사용해서 자신을 제외한 배열에 해당 num2가 있는지 구하는 것입니다.

'알고리즘 문제 > 리트코드' 카테고리의 다른 글

LeetCode 9번 문제 : Palindrome Number 풀이  (1) 2024.02.06