저장을 습관화

프로그래머스 LV.0 가까운 1 찾기 본문

코딩 테스트/프로그래머스 - 자바스크립트

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

ctrs 2023. 9. 20. 21:13

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

https://school.programmers.co.kr/learn/courses/30/lessons/181898

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

가까운 1 찾기


2. 문제 설명

정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다. 정수 idx가 주어졌을 때, idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.

 

단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.


3. 제한 사항

- 3 ≤ arr의 길이 ≤ 100'000

- arr의 원소는 전부 1 또는 0입니다.


4. 예시

arr idx result
[0, 0, 0, 1] 1 3
[1, 0, 0, 1, 0, 0] 4 -1
[1, 1, 1, 1, 0] 3 3


5. 기본 제공 코드

function solution(arr, idx) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

const solution = (arr, idx) => {
  for (i = idx; i < arr.length; i++) {
    if (arr[i] === 1) return i;
  }
  return -1;
};

 

6-2. VSC에 작성한 내용

const solution = (arr, idx) => {
  for (i = idx; i < arr.length; i++) {
    if (arr[i] === 1) return i;
  }
  return -1;
};

// 테스트
console.log(solution([0, 0, 0, 1], 1));
console.log(solution([1, 0, 0, 1, 0, 0], 4));
console.log(solution([1, 1, 1, 1, 0], 3));


7. 특이사항

제한 사항 중의 arr의 길이가 <= 100,000 이라고 되어있어서

만약 배열의 뒷부분이 0으로 9만 9천 9백개 정도가 있으면

런타임 에러가 나는건 아닐까? 걱정했는데

다행히 이 정도로 런타임 에러가 나지는 않는가보다.


8. 다른 사람이 작성한 답

8-1. .indexOf()

const solution=(a,i)=>a.indexOf(1,i);

배열 내에서 특정 문자의 위치를 찾는 메소드 .indexOf()

그냥 arr.indexOf(1) 이라고 적으면 배열 내에서 가장 첫번째로 나오는 1의 인덱스를 리턴하지만

arr.indexOf(1, 2) 라고 적으면 인덱스 2부터 시작해서 1을 찾기 시작한다.