본문 바로가기

기본공부/알고리즘

[Leetcode] JAVA - Two sum(Easy)

문제)

 

배열 nums에서 인덱스의 원소값과 인덱스+1의 원소값을 더했을 때 target 값과 같으면 해당 인덱스들을 반환한다.

 

방법 1)

class Solution {
    
    public int[] twoSum(int[] nums, int target) {
             
        for(int i=0; i<nums.length;i++){
            for(int j=i+1; j<nums.length;j++)
               if(nums[i]+nums[j]==target){                  
                  return new int[] {i,j};
               }            
          }        
        return null;
    }
  }

 

 

이중 포문으로 i=0부터, j=i+1로 i==j인 상황을 막는다. 그리고 if문에서 더한 값이 target과 같으면 해당 인덱스들을 반환한다.

 

방법 2)

class Solution {
    
    public int[] twoSum(int[] nums, int target) {
             
        for(int i=0; i<nums.length;i++){
            for(int j=i+1; j<nums.length;j++)
               if(nums[i]==target-nums[j]){                  
                  return new int[] {i,j};
               }            
          }        
        return null;
    }
  }

 

 

위와 비슷하지만 if문에서 target에서 nums[j]를 뺀 값이 nums[i]와 같을 때 해당 인덱스들을 반환한다. 메모리는 0.1MB가 늘었지만 Runtime이 거의 절반으로 줄어들었다. 이렇게 코드에 따라 달라지는것을 눈으로 확인하니 더욱 효율적으로 코드를 작성하도록 노력해야겠다.