For workingHoliday/Algorithm for JAVA

leetcode (count-pairs-whose-sum-is-less-than-target)

가문비나무 위의 독수리 2024. 5. 27. 21:29

오늘은 leetcode의 문제를 리뷰해 보겠습니다.

문제는 주소는 이거예요!  https://leetcode.com/problems/count-pairs-whose-sum-is-less-than-target/

 

일단.. 제 컴퓨터에서는 leet code가 안 켜지더라고요ㅜㅠ

그래서 회사 컴퓨터로 점심시간에 풀었는데.. 또... 보안 때문에 캡처본을 보낼 수가 없어요,.,

그래서.. 완전 아날로그?처럼 핸드폰으로 사진을 찍었는데.. 또,, 제 코드를 잘라서 찍었네요 ㅎ...

 

각설하고 문제 해설 들어갑니다.

 

해당 문제에는 num이라는 list와 target이라는 Int로 2개의 매개인자가 주어집니다. 

list는 {1,2,3,-1,5} 이런 식으로 무작위로 숫자가 들어가 있고, target에는 -2 이런 식으로 숫자 하나가 들어가 있습니다. 

그리고 이 문제를 풀기 위해 필요한 수는 nums의 길이인 n입니다. 

문제에서 요구하는 조건은

1. list의 숫자를 더했을 때, target보다 작아야 한다. 

2.  0 <= i < j < n 이어야 한다. 

 

문제를 풀기 위해서 생각해야 할 사항은

먼저 어떻게 리스트 안에 숫자들을 더할 것인가 

2. 더했다고 한다면 target이랑 어떻게 비교할 것인가. 

3. 주어진 조건인 0 <= i < j < n 은 어떻게 충족할 것인가. 

 

전 이렇게 생각해서 캡처 밑에와 같이 코드를 짰습니다.

먼저 리스트에 들어가서 하나씩 더해서 비교하려면 2중 for문이 필요하다고 생각했습니다.

그리고 주어진 조건이 2개나 있기 때문에 if문이 필요했고, 0 <= i < j < n를

 

그래서 이러한 생각을 반영한 값이 아래의 저의 코드입니다. 

 

 

class Solution {

   public int countPairs(List <Integer> nums, int target) {
        int a = 0;
        for(int i = 0; j < nums.size(); i++){
            for(int j = 1; j <nums.size(); j++){
                if(i <j && nums.size()){
                    if(nums.get(i) + nums.get(j) < target){
                        a++
                    }
                }
            } return a
        }
   }
}        

 

음.. 위에서 말씀드렸다시피 리트코드가 안되기 때문에.. 괄호가 잘 맞는지는 모르겠어요ㅜㅜ 

그냥 기억나는 대로 다시 복기해서 쓰고 있어서.. 

얼추 맞을 거 같긴 한데.. 혹시나 문제가 있으면.. 잘 수정해서 쓰시길..

 

list의 길이는  length가 아닌 size로 찾아야 한다.

일반 배열처럼 [0]이런 식으로  괄호는 풀어서 값을 가져오는 것이 아닌 list는 get을 사용해서 가져와야 한다.