첫 번째로 나오는 음수
https://school.programmers.co.kr/learn/courses/30/lessons/181896
- 문제 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Solution { public int solution(int[] num_list) { for (int i = 0; i < num_list.length; i++) { if (num_list[i] < 0) { return i; // 첫 번째로 나오는 음수의 인덱스 반환 } } return -1; // 음수가 없는 경우 -1 반환 } public static void main(String[] args) { Solution sol = new Solution(); System.out.println(sol.solution(new int[]{12, 4, 15, 46, 38, -2, 15})); // 출력: 5 System.out.println(sol.solution(new int[]{13, 22, 53, 24, 15, 6})); // 출력: -1 } }
- Java 8의 Stream API와 Optional을 사용하여 문제를 해결
IntStream
을 이용해서 주어진 배열을 순회하면서 음수를 찾고, 해당하는 첫 번째 음수의 인덱스를 반환하거나, 음수가 없으면 -1을 반환한다.1 2 3 4 5 6 7 8 9 10 11 12
import java.util.OptionalInt; // OptionalInt는 값이 있을 수도 있고 없을 수도 있는 정수 값을 나타내는 데 사용된다. import java.util.stream.IntStream; class Solution { public int solution(int[] num_list) { OptionalInt firstNegativeIndex = IntStream.range(0, num_list.length) .filter(i -> num_list[i] < 0) .findFirst(); // 음수가 있는 첫 번째 인덱스 찾기 return firstNegativeIndex.orElse(-1); // 음수가 없으면 -1 반환 } }
filter(i -> num_list[i] < 0)
는 스트림 요소를 필터링하는 데 사용되는 메서드이다. 이 경우, 주어진 배열num_list
에서 해당 인덱스의 값이 음수인 경우를 필터링하여 해당하는 인덱스를 가져온다.i -> num_list[i] < 0
는 람다 표현식이다.i
는 배열의 인덱스를 나타내며,num_list[i] < 0
는 해당 인덱스의 값이 0보다 작은지를 체크한다. 이 필터링된 결과를 통해 음수인 인덱스를 가져올 수 있다.
findFirst()
메서드는 Java 스트림에서 사용되는 메서드 중 하나로, 이 메서드는 스트림에서 첫 번째 요소를 반환한다. 스트림이 비어있는 경우에는 아무 값도 반환하지 않을 수 있다.OptionalInt
는 Java 8 이후부터 도입된 클래스로, 값이 있을 수도 있고 없을 수도 있는 값을 감싸는 래퍼 클래스이다. 기본 타입인int
의 값을 감싸기 위한 것으로,OptionalInt
는 값이 있으면 해당 값을 반환하고, 값이 없으면 기본적으로 제공된 기본값을 반환한다.orElse(-1)
는OptionalInt
의 메서드로,firstNegativeIndex
에 값이 있으면 해당 값을 반환하고, 값이 없으면-1
을 반환한다. 이렇게 하면 음수가 있는 첫 번째 인덱스를 반환하거나, 음수가 없으면-1
을 반환할 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.