코린이의 소소한 공부노트

[LeetCode/Easy] 2094. Finding 3-Digit Even Numbers 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2094. Finding 3-Digit Even Numbers

무지맘 2023. 4. 26. 20:35

1. Input

1) int[] digits

 

2. Output

1) digits의 숫자를 이용해 다음 조건을 만족시키는 숫자를 배열에 담아 오름차순으로 반환

- digits의 숫자 중 인덱스가 다른 것을 3개 고른다.

- 세 숫자를 이어 붙여 3자리 자연수를 만든다.

- 이 자연수는 짝수여야 한다.

- 결과 배열에 중복은 없어야 한다.

 

3. Constraint

1) 3 <= digits.length <= 100

2) 0 <= digits[i] <= 9

 

4. Example

Input: digits = [2,1,3,0] -> Output: [102,120,130,132,210,230,302,310,312,320]

Input: digits = [2,2,8,8,2] -> Output: [222,228,282,288,822,828,882]

 

5. Code

1) 첫 코드(2023/04/26)

class Solution {
    public int[] findEvenNumbers(int[] digits) {
        HashSet<Integer> set = new HashSet<>();
        for(int i=0 ; i<digits.length ; i++){
            int n = digits[i]*100;
            if(digits[i]!=0){
                for(int j=0 ; j<digits.length ; j++){
                    if(i!=j){
                        n += digits[j]*10;
                        for(int k=0 ; k<digits.length ; k++){
                            if(i!=k && j!=k && digits[k]%2==0)
                                set.add(n+digits[k]);
                        } // k
                        n -= digits[j]*10;
                    }
                } // j
            }
        } // i
        int[] answer = new int[set.size()];
        Iterator it = set.iterator();
        int i = 0;
        while(it.hasNext())
            answer[i++] = (int)it.next();
        Arrays.sort(answer);
        return answer;
    }
}