프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 가까운 1 찾기(Java)

Sigfriede 2023. 5. 7. 01:10

  문제 설명

  정수 배열 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로 설정하는 것이 효율적인 방법이겠습니다. 그렇다면 연산량도 줄일 수 있고, 이후에 조건을 설정하지 않아도 됩니다.