문제 설명
정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다. 정수 idx가 주어졌을 때 idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.
단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.
제한사항
- 3 <= arr의 길이 <= 100,000
- arr의 원소는 전부 1 또는 0입니다.
입출력 예
arr | idx | result |
[0, 0, 0, 1] | 1 | 3 |
[1, 0, 0, 1, 0, 0] | 4 | -1 |
[1, 1, 1, 1, 0] | 3 | 3 |
class Solution {
public int solution(int[] arr, int idx) {
int answer = 0;
for (int i = 0; i < arr.length; i++) {
if (i >= idx && arr[i] == 1) {
answer = i;
break;
} else {
answer = -1;
}
}
return answer;
}
}
for문이 arr의 길이만큼 순회합니다. 만약 i가 idx보다 크거나 같고, 동시에 arr의 i번째 원소가 1이라면 answer에 i를 할당합니다. 또한 break로 즉시 for문을 탈출합니다. 만약 앞선 조건에 해당하지 않는다면 answer에 -1을 할당합니다.
i의 시작값을 0이 아닌 idx로 설정하는 것이 효율적인 방법이겠습니다. 그렇다면 연산량도 줄일 수 있고, 이후에 조건을 설정하지 않아도 됩니다.
'프로그래머스 > Lv. 0(코딩 기초 트레이닝)' 카테고리의 다른 글
[프로그래머스 코딩테스트] n개 간격의 원소들(Java) (0) | 2023.05.08 |
---|---|
[프로그래머스 코딩테스트] 2의 영역(Java) (0) | 2023.05.07 |
[프로그래머스 코딩테스트] qr code(Java) (0) | 2023.05.07 |
[프로그래머스 코딩테스트] 문자열 뒤집기(Java) (0) | 2023.05.06 |
[프로그래머스 코딩테스트] 간단한 논리 연산(Java) (0) | 2023.05.06 |