Leetcode 알고리즘 테스트 [Twosum]

1 분 소요

안녕하세요 Legas 입니다.

요즘 자바 공부는 책을 구매하여 공부하고 있는 상황입니다. 상속단계를 배우고있는 상황이고 알고리즘 문제를 푼지 오래되어 이번 포스팅부터 꾸준히 알고리즘 문제를 풀어나가는 포스팅을 이어가도록 하겠습니다.

1. 알고리즘 문제 Twosum

문제 예시
Input: nums = [2,7,11,15], target = 9
주어진 숫자의 배열이 [2, 7, 11, 15]와 같을때 2개의 합이 target와 같은 index를 반환

Output: [0,1]
index 0과 1은 각각 2,7이 되므로

Output: Because nums[0] + nums[1] == 9, we return [0, 1].
2+7 = 9가되어 target과 똑같은 값이 되니 해당 숫자의 index[0, 1]을 반환

2. 알고리즘 문제 풀이

이 문제를 보고 처음에 필요하다고 생각했던건 중첩 for문입니다.
두번쨰는 index를 반환하기 위해 값을 저장할 새로운 배열 생성이었습니다.

아래 문제 풀이

package com.Leetcodesolve;

public class Twosum {
    public int[] twoSum(int[] nums, int target){
        int[] answer = new int[2];
        for(int i=0; i< nums.length; i++){
            for(int j=0; j< nums.length; j++){
                if(nums[i]+nums[j]==target){
                    if(i<j){
                        System.out.println("["+i+","+j+"]");
                        answer[0]=i;
                        answer[1]=j;
                    }
                }
            }
        }
        return answer;
    }
}

첫번째 index값을 저장할 배열을 for문 안에서 사용 할 수 있게 for문 위에 생성

두번째 for문의 사용은 nums의 주어진 index만큼 반복시켜 0~배열길이를 모두 확인하도록 생성

세번째 if문을 사용하여 중첩for문이 반복할때 각 index값이 traget와 일치하는지 확인

네번째 if문 안에 if문을 사용하여 검증하는 nums의 index가 서로 동일한 index로 target를 확인하지 못하에 확인

마지막 네번째 확인을 했을때 두개의 index i와 j가 서로 다르면서 두개의 합이 traget와 일치할때 미리 생성했던 배열 index에 각각 값 저장 이후 return문을 사용하여 반환

댓글남기기