✏️ 문제

수열이 주어질 때, 이 수열에 있는 수 중 최소값의 위치를 모두 출력하는 프로그램을 작성하세요.
입력은 자연수로 된 배열을 받고, 시작 위치는 0으로 계산하여 최소값의 위치를 배열로 반환합니다.
모든 수는 100이하의 자연수로 입력 받습니다.

  • 입력값
    [5, 2, 10, 2]
    [4, 5, 7, 4, 8]
    [12, 11, 11, 16, 11, 12]

📝 풀이

function answer(nums) {
  let result = [];

  // 1. 최소값 찾기
  let min = Number.MAX_SAFE_INTEGER;// 가장 큰 숫자로 작성, 양수의 최대값으로 설정

  for (let i = 0; i < nums.length; i++) {
    if (min > nums[i]) { // min = 최소값 변수 , min보다 nums의 요소값이 작을 경우
      min = nums[i] // 최소값을 찾음
    }
  }

  // 2. 최소값에 해당하는 위치 [index]
  let count = 0;
  for (let i = 0; i < nums.length; i++) {
    if (min === nums[i]) {
      result[count++] = i
    }
  }

  return result;
}
  1. let min에 Number.MAX_SAFE_INTEGER 을 사용하여 가장 큰 양수를 선언한다.
  2. for문을 이용하여, nums의 length만큼 순회하는데, 이때 만약 min보다 nums[i]의 요소 값이 적을 경우 min에 nums[i]를 넣어준다.
  3. count를 선언하여 담을 그릇을 만들어 준다.
  4. for문을 이용하여, 위와 동일하게 순회하며, 이때 min과 nums[i]의 값이 같을 경우 result에 i를 넣어준다.

profile
#UXUI #코린이

0개의 댓글