머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array
와 머쓱이의 키 height
가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.
array
의 길이 ≤ 100height
≤ 200array
의 원소 ≤ 200array | height | result |
---|---|---|
[149, 180, 192, 170] | 167 | 3 |
[180, 120, 140] | 190 | 0 |
입출력 예 #1
입출력 예 #2
const solution = (array, height) => array.filter(x => x > height).length;
/* 내가 처음 작성한 코드이다. filter를 이용해서 머쓱이의 키보다 큰 사람을 추출하여
length를 해주면 된다. */
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이후로 화살표 함수가 사용되었다.
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;
}
// 위의 코드를 화살표 함수로 변경해보았다.
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의 요소들이 하나씩 순회하기때문에
인덱스로 접근할 필요가 없다. */
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