문제풀이/프로그래머스

[Java 자바] 프로그래머스 level.0 가까운 1 찾기

꼬ㄴi 2023. 7. 21. 23:32

일단 문제에 오류(?) 가 있는 것 같다. 문제 설명이 입출력 예시 설명이랑 매치가 안 맞기 때문 . . 

문제 설명 읽고 코드 짜면 입출력 예시랑 다른 답이 나온다.

문제의 오류는 정정해서 아래 써놓는 걸로🙌 코드 짜는 거 자체는 그렇게 어렵지 않았다. 아직 쪼렙0. . 

 

문제 설명

정수 배열 arr 가 주어집니다. 이 때 arr 의 원소는 1 또는 0 입니다. 

정수 idx 가 주어졌을 때, idx 보다 크면서 와 같거나 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 함수 완성하기

단, 만약 그러한 인덱스가 존재하지 않을 경우엔 -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

입출력 예 설명

# 1

idx인 1보다 크면서 원소가 1인 가장 작은 인덱스는 3. result의 값으로 3을 return

# 2

4번 인덱스 이후에 1의 값은 존재하지 않음. 따라서 -1 return

# 3

idx 3번 인덱스의 값이 1이므로 3을 result 값으로 return


class Solution {
    public int solution(int[] arr, int idx) {
        int answer = -1;
        
        for(int i = idx; i < arr.length; i++){
            if(arr[i] == 1){
                answer = i;
                break;
            }
        }
        
        return answer;
    }
}

idx 의 인덱스부터 끝 인덱스까지 반복문을 돌면서 데이터값이 1인지 검사

처음으로 값이 1인 데이터가 나왔을 때, 해당 인덱스 값을 answer 변수에 저장하고 break로 반복문을 빠져나옴!

그리고 answer 값을 return

반복문을 다 돌았는데도 1이 배열에 없는 경우엔, answer의 초기값인 -1이 return 됨