프로그래밍언어/알고리즘

Leetcode 문제풀이 난이도 Easy Two Sum Java

by 앵과장 2022. 9. 15. 08:02
반응형

Leetcode

https://leetcode.com/problemset/all/

 

문제풀이

 

nums  : int[] 타입 배열

target : nums 배열에 속한 2개의 index 합

output : target에 해당하는 2개의 nums배열 index 반환

 

배열을 2개의 배열로 돌면서 값을 비교해서 동일하면 반환하는 형태로구현 해보도록 하겠습니다.

 

우선 테스트 코드에 아래처럼 짜보고

package com.codeing.code.leetcode;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertArrayEquals;

@SpringBootTest
class TwoSumTest {
    public int[] twoSum(int[] nums, int target) {
        int[] answer = {};

        for (int i = 0; i < nums.length -1; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if(nums[i]+nums[j] == target){
                    answer = new int[]{i,j};
                    break;
                }
            }
        }
        return answer;
    }

    public int[] twoSumMap(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            if(map.containsKey(nums[i])){
                return new int[]{map.get(nums[i]),i};
            }
            //9-2 7, 0
            //9-7 2, 1
            //9-11 -2, 2
            //9-15 -6, 3
            map.put(target - nums[i], i);

        }

        return new int[]{};
    }

    @Test
    void twoSumTest(){
        int[] nums = new int[]{2, 7, 11, 15};
        int target = 9;

        int[] testValue = new int[]{0,1};

        assertArrayEquals(twoSum(nums,target),testValue);
    }

    @Test
    void twoSumMapTest(){
        int[] nums = new int[]{2, 7, 11, 15};
        int target = 26;

        int[] testValue = new int[]{2,3};

        assertArrayEquals(twoSumMap(nums,target),testValue);
    }
}

정상적으로 잘나오는게 확인이 되었다면 

Leetcode에 해당 코드가 잘동작하는지 submit해보겠습니다.

관련 코드는 github에 공유드립니다.

 

https://github.com/lswteen/codeing/blob/main/src/main/java/com/codeing/code/leetcode/TwoSum.java

 

GitHub - lswteen/codeing: 하루에 하나씩 코딩을 해보도록 하겠습니다.

하루에 하나씩 코딩을 해보도록 하겠습니다. Contribute to lswteen/codeing development by creating an account on GitHub.

github.com