본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 13 - 머쓱이보다 키 큰 사람)

728x90

 

# 문제 

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.



# 답안

// 1. 입력: array -> 정수 배열 [1,2,3] 같은거, height -> 정수 1,2,3 같은거 
// 2. 출력: height보다 큰 array의 원소들의 수 -> 정수 1,2,3 같은거


// 방법1) for...of 반복문 사용
function solution(array, height) {
    const arr = []
    for (let value of array)
       if (value > height){
       arr.push(value)
    }
    return arr.length ;
}


// 방법2) for 반복문 사용
function solution(array, height) {
    const arr = [];
    for (let i = 0; i < array.length; i++) {
        if (array[i] > height) {
            arr.push(array[i]);
        }
    }
    return arr.length;
}


// 방법3) filter 사용
function solution(array, height) {
    const arr = array.filter(item => item > height);
    return arr.length;
}



# 인사이트 

// filter 메서드를 쓰면 코드 길이가 훨씬 줄어들고 효율적이다!

 


<방법1 과정>

ex. array = [180, 120, 170], height = 160 일 경우

- 첫번째 value는 180이므로, 조건문 if (value > height)이 (180 >160)  true이므로, arr [ ]에 value 180이 push 된다. → arr = [180]
- 두번째 value는 120이므로, 조건문 if (value > height)이 (120 >160) false이므로, 본문이 실행되지않는다. 
- 세번째 value는 170이므로, 조건문 if (value > height)이 (170 >160)  true이므로, arr [ ]에 value 170이 push 된다. → arr = [180, 170]
- 배열의 모든 요소를 순회했으므로, 반복문이 종료된다.
- arr = [180, 170] 이므로, arr.length는 2가 된다

 


< 방법2 과정 >

ex. array = [180, 120, 170], height = 160 일 경우
-> array.length는 3이다.

- 변수 i는 값이 0이다. (begin 실행)
- i가 0이므로 (i < 3) 조건이 true가 된다. (condition이 truthy이면,)
- 반복문 본문(body)이 실행된다. if절 조건 (array[i] > height)가 180 > 160 true이므로 arr [ ]에 180이 push 된다.
arr = [180]
- i가 1로 증가한다. (body를 실행 한 후, step을 실행함)

- i가 1이므로 (i < 3) 조건이 true가 된다. (condition이 truthy이면,)

- 반복문 본문(body)이 실행된다. if절 조건 (array[i] > height)가 120 > 160 false이므로 if절 본문이 실행되지않는다. 
- i가 2로 증가한다. (body를 실행 한 후, step을 실행함)

- i가 2이므로 (i < 3) 조건이 true가 된다. (condition이 truthy이면,)
- 반복문 본문(body)이 실행된다. if절 조건 (array[i] > height)가 170 > 160 true이므로 arr [ ]에 170이 push 된다.
 arr = [180, 170]

- i가 3으로 증가한다. (body를 실행 한 후, step을 실행함)

- i가 3이므로 (i < 3) 조건이 false가 되고 반복문이 종료된다.
- arr = [180, 170] 이므로, arr.length는 2가 된다

 

 

 

728x90