극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] 가까운 1 찾기

sundori 2023. 9. 4. 22:14

목차

    #1 가까운 1 찾기

     

    문제 설명

    정수 배열 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

    #2 알고리즘 및 코드

    class Solution {
        public int solution(int[] arr, int idx) {
            for(int i = idx; i < arr.length; i++){
                if(arr[i] == 1){
                    return i;
                }
            }
            return -1;
        }
    }
    • 처음 봤을 때 어려웠지만 차근차근 여러 번 읽어보면 이해가 된다.
    • 배열의 arr [idx]부터 시작하면 되는데 그 이유는 idx 보다 크면서라는 조건이 있어서이다.
    • arr [idx]부터 arr [arr.length-1]까지 이 사이의 값이 1인 것들 중 인덱스 번호가 가장 작은 것을 반환하거나
      이러한 조건을 충족하는 인덱스가 없다면 -1을 반환하는 문제이다.