본문 바로가기

TIL(Today I Learned)

TIL-231114([프로그래머스/자바] 가까운 1 찾기)

📝오늘 공부한 것

  • 커리어톤 참여하기
  • 면접 준비하기
  • 프로그래머스 문제풀기

📌 문제

📌 풀이

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

 

⭐ 다른 풀이

정답 처리는 되었지만, 오류가 있는 풀이였다.

현재 코드는 반복문이 진행되는 동안 arr[i]가 1이 아닐 때마다 answer를 -1로 설정하고 있다. 만약 배열의 마지막 원소가 1이라면 그 이전에 나오는 0들 때문에 answer가 -1로 설정되고, 이후에 1이 나오더라도 answer를 올바른 값으로 변경하지 않게 된다.

따라서 반복문 시작 전에 answer를 -1로 설정하고, 반복문 내에서는 arr[i]가 1일 때만 answer를 변경하는 것이 좋다.

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;
    }
}