문제 설명

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


제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ height ≤ 200
  • 1 ≤ array의 원소 ≤ 200

입출력 예

arrayheightresult
[149, 180, 192, 170]1673
[180, 120, 140]1900

입출력 예 설명

입출력 예 #1

  • 149, 180, 192, 170 중 머쓱이보다 키가 큰 사람은 180, 192, 170으로 세 명입니다.

입출력 예 #2

  • 180, 120, 140 중 190보다 큰 수는 없으므로 0명입니다.

✍ SOLUTION1

const solution = (array, height) => array.filter(x => x > height).length;

/* 내가 처음 작성한 코드이다. filter를 이용해서 머쓱이의 키보다 큰 사람을 추출하여 
length를 해주면 된다. */

✍ SOLUTION2

function solution(array, height) {
    let result = 0;
    array.map((arr) => height < arr && result++);

    return result;
}

/* 이건 다른분의 코드인데 신기해서 가져와봤다. map메서드를 이용해서 array의 모든 요소를 
순회하면서 height보다 매개변수(arr)가 클때 result에 1씩 증가하도록 
콜백함수의 반환값으로 만들어 주었다. 마지막에 result의 값을 리턴하도록 만들었다.*/
const solution = (array, height) => {
	let result = 0;
	array.map((arr) => height < arr && result++);
	
	return result;
}

// 위의 코드를 화살표 함수로 변경해보았다. ES6이후로 화살표 함수가 사용되었다.

✍ SOLUTION3

function solution(array, height) {
    var answer = 0;
    for (let i = 0; i < array.length; i++) {
        if (array[i] > height) {
            answer++
        }
    }
    return answer;
}

/* 이것도 다른분의 코드인데 for문을 통해 array의 인덱스로 요소에 접근하여 if문으로 머쓱이보다 키가 큰 
요소들을 체크해서 answer에 1씩 증가시켜주는 방식으로 진행하였다. */
const solution = (array, height) => {
	var answer = 0;
	for (let i = 0; i < array.length; i++) {
        if (array[i] > height) {
            answer++
        }
    }
    return answer;
}

// 위의 코드를 화살표 함수로 변경해보았다.

✍ SOLUTION4

const solution = (array, height) => {
	let answer = 0;
	for(let i of array) {
		if(i > height) {
			answer+=1
		}
	}
	return answer;
}

/* SOLUTION3의 코드를 보다가 for of로도 접근해볼수 있을거같아서 작성해 보았다.
SOLUTION3의 if문 내용이 다른 점은 for of는 변수 i에 array의 요소들이 하나씩 순회하기때문에
인덱스로 접근할 필요가 없다. */

✍ SOLUTION5

function solution(array, height) {
    array.push(height);
    array.sort((a, b) => a - b);
    var answer = array.length - array.lastIndexOf(height) - 1;
    return answer;
}

/* 다른분의 코드를 보다가 신기한 방법이 있어서 들고와봤다. 먼저 array에 머쓱이의키(height)를 push
해준 후 sort를 이용해서 오름차순으로 정렬해준다. array.length에서 arr.lastIndexOf(height)를
빼준 후 1을(처음에 array에 height를 push해줬으니까) 빼준 값을 리턴해준다.   */
const solution = (array, height) => {
	array.push(height);
	array.sort();
	return array.length - array.lastIndexOf(height) - 1;
}

/* 위의 코드를 화살표 함수로 바꾸고 조금 간결하게 작성해 보았다. sort는 괄호안에 아무것도 
입력하지 않으면 오름차순으로 정렬을 해주기 때문에 굳이 'array.sort((a, b) => a - b)' 이렇게
작성할 필요가 없다. 그리고 var키워드를 이용해서 answer변수를 만들어주었는데 굳이 만들지 않아도
바로 리턴해주면된다. */

출처 : 프로그래머스 스쿨 | 코딩테스트
https://school.programmers.co.kr/learn/courses/30/lessons/120585

0개의 댓글