ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열의 최소값 구하기:: for문 알아보기
    Study/JavaScript 2020. 6. 24. 11:48

     

     


    Q. findSmallestElement 함수를 구현해 주세요.

    findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 array 입니다.
    array 의 값들 중 가장 작은 값을 리턴해주세요. 만일 array가 비어있으면 0을 리턴해주세요.

    예를 들어, 다음과 같은 array이 인자(input)으로 들어왔다면:
    [20, 200, 23, 1, 3, 9]
    1이 리턴되어야 합니다.

     

    자바스크립트 for문을 이용해 위의 문제를 해결해보자.

     

    그러려면 먼저 js의 for문에 대해 알아야 할 것이다. 

     

     

    for문이란?


    for문이란 코드를 원하는 만큼 반복시킬 수 있다.

    for문에 실행 조건이 언제부터 언제까지 될 것이라고 알려주면 동작을 그 만큼 반복 할 수 있다.

     

     

     

    for문을 왜 사용하는가?


    개발을 하다보면 여러 동작을 반복해야 하는 경우가 종종 생긴다.

    상품 목록에서 상품을 차례때로 출력하거나 숫자를 1부터 10까지 하나씩 증가시키면서 동일한 코드를 반복실행해야 하는 경우 같이 말이다.

     

    그럴때 for, while같이 반복문(loop)을 사용하면 동일한 코드를 여러 번 반복할 수 있다.

     

     

    for문의 구조


    for (begin; condition; step) {
    	// ...반복 조건이 맞으면 실행할 코드
    }

     

    예를들면 아래와 같다.

     

    for (let i = 0; i < 3; i++) { // 0, 1, 2가 출력됩니다.
      alert(i);
    }

     

    또 다른 예문으로 for문의 조건을 살펴보자.

    i가 5가 될때까지 for문의 {} 안을 실행하다가, 6이 되면 i <= 5라는 식은 false가 된다. (6 > 5)

     

    따라서 {} 내부로 들어가지 못하고, {} 밖으로 벗어난다.

    그렇다면 i가 0, 1, 2, 3, 4, 5 일 때 실행하게 되니 for문이 총 6번 실행된다.

     

     

    for문 내부의 if문 해석


    const home = "대전";
    let cities = ["서울", "대전", "대구", "부산", "광주", "제주도"];
    
    
    for (let i = 0; i <= 5; i++) {
       if (cities[i] === home) {
         console.log("아, "+ cities[i] +" 사시는군요");
       }
    }

    i가 0일 때는 cities[0]과 home을 비교한다. 

     

    "서울" === "대전"

    같지 않으므로 if문 {} 내부로 들어가지 않고 i가 0일때의 for문은 끝난다.

    그 다음에 i가 1이 증가하여 i가 1이 되면, cities[1]과 home을 비교하게 되고,

    "대전" === "대전"

    참이므로 if문이 실행되었다.

    이렇게 i가 5가 될 때까지 if 조건을 확인하며 for문이 실행되고 종료 조건을 만족하면 반복이 마무리된다.

     

     

     

    이제 이 배열과, for문, if문을 활용해 맨 처음 나왔던 문제를 풀어보자.

     

    function findSmallestElement(arr){
    
      if(arr.length === 0) {
        return 0; //빈 배열이면 0을 리턴
      } else { 
        let min = arr[0];
        // 변수 min에 배열의 아무 값을 임의로 설정. (가상의 최솟값)
        for (i = 0 ; i < arr.length; i++) {
          if (arr[i] < min ) {
            min = arr[i];
          } 
        } return min;  
      }
      
    }
    
    findSmallestElement([2000000, 30, 5, 7, 200, 1, 0, 9])

     

    이 예제의 핵심은 먼저 최솟값을 변수로 설정하고 배열의 임의의 값을 할당하는 것이다.

    그래서 배열의 길이만큼 반복문을 실행하면서 그 가상의 최솟값과 각 배열의 원소를 비교해본다. 만약 변수 min의 값이 더 크면 값을 새로 재할당을 해준다. (최솟값 갱신) 그게 아니라 변수 min의 값이 여전히 더 작을때는 그대로 값을 유지하면서 리턴해준다.

     

     

     

    참조: https://velog.io/@rimu/,

    위코드, https://ko.javascript.info/while-for

    'Study > JavaScript' 카테고리의 다른 글

    string, Number 변환  (0) 2020.06.24
    slice  (0) 2020.06.24
    web API :: Navigator  (0) 2020.06.13
    Array.from()  (0) 2020.06.13
    forEach()와 map()의 차이점  (3) 2020.06.13

    댓글

Designed by Tistory.