Coding Test/Java Coding Test

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

nam_ji 2024. 1. 19. 08:46

가까운 1 찾기

문제

  • 정수 배열 arr과 정수 idx가 매개변수로 주어집니다.
  • arr의 원소 위치가 idx값보다 크면서 배열의 값이 1인 가장 작은 인덱스를 출력하는 문제입니다.
  • idx값보다 크면서 배열의 값이 1이 없으면 -1을 출력합니다.


테스트 (이클립스)

  • answer의 초기값을 -1로 주고
  • for문을 idx부터 시작하게 하여 arr의 크기만큼 순회하도록 합니다.
  • if문을 이용하여 arr의 원소를 1과 비교합니다.
  • 만약 1이라면 answer에 그 원소 위치를 담도록 하고 for문을 종료합니다.
  • if문의 조건을 만족하지 않고 for문 종료될 경우 answer의 초기값인 -1을 출력하게 되어 문제를 해결할 수 있었습니다.
package com.namji.codingtest.level0;

public class Find_1_NearYou {
	public static void main(String[] args) {
		/*
		 * 정수 배열 arr과 정수 idx가 매개변수로 주어집니다.
		 * arr은 0과 1로 이루어져 있고
		 * idx가 주어졌을 때 arr의 idx번째 원소 뒤로 1이 있으면 위치를 출력하는 문제입니다.
		 * [0, 0, 0, 1], 1 > 3 / [1, 0, 0, 1, 0, 0], 4 > -1 / [1, 1, 1, 1, 0], 3 > 3
		 */
		int[] arr = {1, 1, 1, 1, 0};
		int idx = 3;
		int answer = 0;
		for (int i = idx; i < arr.length; i++) {
			if (arr[i] == 1) {
				answer = i;
				break;
			} else {
				answer = -1;
			}
		}
		
		int answer1 = -1;
		for (int i = idx; i < arr.length; i++) {
			if (arr[i] == 1) {
				answer1 = i;
			}
		}
		
		System.out.println("answer = " + answer);
		System.out.println("answer1 = " + answer1);
	}
}


프로그래머스 코드

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