코딩 테스트

#코딩테스트하면서 알게 된 부분들 (2025.04.28)

duhwan98 2025. 4. 30. 15:11

1. 하샤드 수

char 타입을 정수로 변환하기 위해서는 '0'을 빼면 된다.
class Solution {
    public boolean solution(int x) {
        // x를 문자열로 변환
        String n = String.valueOf(x);
        int sum = 0;
        
        // 각 자릿수의 합 계산
        for(int a = 0; a < n.length(); a++) {
            sum += n.charAt(a) - '0'; // '0'을 빼면 문자에서 숫자로 변환됨
        }
        
        // x가 각 자릿수 합으로 나누어 떨어지는지 확인
        if (x % sum == 0) {
            return true;
        } else {
            return false;
        }
    }
}

2. 나누어 떨어지는 숫자 배열

ArrayList -> 배열(Array) 로 변환 할 때 Stream을 사용하면 간단하다.
import java.util.Arrays;
import java.util.ArrayList;
class Solution {
    public int[] solution(int[] arr, int divisor) {
        Arrays.sort(arr);		//배열 오름차순
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0; i<arr.length; i++) {
            if(arr[i]%divisor==0) {	//나누어떨어지는 수 배열에 넣기
                list.add(arr[i]);
            }
        }
        
        if(list.isEmpty()) {	//배열에 나누어떨어지는 수가 없을시 -1 반환
            list.add(-1);
        }
        
         return list.stream().mapToInt(i -> i).toArray();	// ArrayList -> Array
    }
}

 

추가 설명

list.stream()은 스트림을 생성하는 메서드입니다.
  • stream() 메서드는 리스트(ArrayList)의 데이터를 스트림 형태로 변환하여 처리할 수 있게 합니다.
  • 스트림은 순차적이나 병렬적으로 데이터를 처리할 수 있게 도와주는 기능을 제공하는 Java의 새로운 기능입니다.
mapToInt(i -> i)는 스트림의 각 요소를 int로 변환하는 역할을 합니다.
  • mapToInt는 스트림의 각 요소를 int로 매핑합니다.
  • i -> i는 람다식(Lambda Expression)으로, i는 스트림의 각 요소를 의미하고, 그 요소를 그대로 반환(i -> i)하는 부분입니다. 즉, Integer 객체를 int로 변환하는 거죠.

기능:

  • 이 메서드는 Integer 객체를 int 기본형으로 변환하는데 사용됩니다.
  • mapToInt는 IntStream을 반환하는데, 이는 기본형 int를 다루는 스트림입니다.
toArray()는 스트림의 데이터를 배열로 변환하는 메서드입니다.
  • 이 메서드를 호출하면 스트림의 모든 요소가 새로운 배열에 담겨 반환됩니다.