728x90
반응형

//break
public class cate {
public static void main(String[] args) {
int n = 10;
int x = 0;
for(x=2; x<10; x++) {
if(n%x == 1) {
System.out.println(x);
break;
}
}
}
}
//IntStream
public int solution(int n) {
return IntStream.range(2, n).filter(i -> n%i==1).findFirst().orElse(0);
}
}
//List
class Solution {
public int solution(int n) {
List<Integer> result = new ArrayList<>();
for(int x=2; x<n; x++) {
if(n%x==1) {
result.add(x);
}
}
return result.get(0);
}
}
스트림은 잘 사용해보지 않아서 다른사람풀이 보고 공부했다.
1. IntStream.range(2, n)
2부터 n-1까지의 정수 범위로 스트림을 생성한다
2. filter(i -> n%i==1)
이 스트림에 필터를 적용하여 n을 i로 나눈 나머지가 1인 i만을 남긴다
3. findFirst()
필터링된 스트림에서 첫 번째 요소를 찾는다
만약 스트림이 비어있다면, 첫 번째 요소는 존재하지 않는다
4. orElse(0)
findFirst() 로 찾은 값이 있으면 그 값을 반환하고, 없으면 0을 반환한다
if(!result.isEmpty()) {
System.out.println(result.get(0)); // 조건을 만족하는 첫 번째 x 값 출력
} else {
System.out.println("조건을 만족하는 x 값이 없습니다.");
}
자료 구조 사용하는 걸 좋아해서 최대한 사용해보려고 했다.
1. result.add(x);
나머지가 1인 경우, 현재의 x 값을 result 리스트에 추가한다
2. return result.get(0);
반복문이 종료된 후, result 리스트의 첫 번째 요소를 반환한다
만약 어떤 x 값도 조건을 만족하지 않아 리스트가 비어있다면, 이 부분에서 IndexOutOfBoundsException이 발생한다.
이렇게 예외 처리를 해주면 되지 않을까..
728x90
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/Java]Comparator와 copyOfRange (0) | 2023.09.30 |
|---|---|
| [프로그래머스/Java] 정수 제곱근 판별 (0) | 2023.09.13 |
| [프로그래머스/Java] 문자열 내 p와 y의 개수 (0) | 2023.09.11 |
| [프로그래머스/Java] 자연수 뒤집어 배열로 만들기 (0) | 2023.09.07 |
| [프로그래머스/Java] 자릿수 더하기 (0) | 2023.09.05 |