코딩 테스트
#코딩테스트하면서 알게 된 부분들 (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()는 스트림의 데이터를 배열로 변환하는 메서드입니다.
- 이 메서드를 호출하면 스트림의 모든 요소가 새로운 배열에 담겨 반환됩니다.