프로그래머스 알고리즘 테스트
머쓱이보다 키 큰 사람
solution.js
function solution(array, height) {
var answer = 0;
return answer;
}
배열array의 각요소가 height의 값보다 큰지 작은지를 판단하는 식을 작성해야한다.
나의풀이
function solution(array, height) {
let answer = 0
for(let i of array){
if(i > height){
answer += 1
}
}
return answer;
}
다른 풀이1
function solution(array, height) {
var answer = array.filter(item => item > height);
return answer.length;
}
배열 두배 만들기
solution.js
function solution(numbers) {
var answer = 0;
return answer;
}
배열 numbers의 각 요소마다 *2를 해주는 메서드를 적용해야한다.
나의 풀이
function solution(numbers) {
let arr = numbers.map((e) => e * 2)
return arr;
}
다른 풀이1
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
삼각형의 완성조건 (1)
solution.js
function solution(sides) {
var answer = 0;
return answer;
}
배열 sides를 오름차순으로 정렬하고 가장 큰 값이 나머지 두값의 합보다 크면 1을 리턴 아니면 2를 리턴하는 식을 짠다.
나의 풀이
function solution(sides) {
let arr = sides.sort((a,b) => (b - a))
return (arr[1] +arr[2]) > arr[0] ? 1 : 2;
}
다른 풀이1
function solution(sides) {
var answer = 0;
const max = Math.max(...sides);
const sum = sides.reduce((a,b) => a + b, 0) - max;
answer = max < sum? 1 : 2;
return answer;
}
중앙값 구하기
solution.js
function solution(array) {
var answer = 0;
return answer;
}
나의 풀이
function solution(array) {
array.sort((a,b) => a-b);
let answer = parseInt(array.length / 2);
return array[answer];
}
다른 풀이1
function solution(array) {
return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}
짝수는 싫어요
solution.js
function solution(n) {
var answer = 0;
return answer;
}
나의 풀이
function solution(n) {
let answer = [];
let arr = Array(n).fill().map((_, e) => e+1);
for(let i = 0; i <= arr[arr.length-1]; i++){
if(i%2 !==0){
answer.push(i)
}
}
return answer;
}
다른 풀이1
function solution(n) {
var answer = [];
for (let i = 1; i<=n; i+=2) answer.push(i)
return answer;
}
다른 풀이2
const solution = (n) =>
Array
.from({ length: n }, (_, i) => i + 1)
.filter(i => i % 2 !== 0)
배열의 유사도
solution.js
function solution(s1, s2) {
var answer = 0;
return answer;
}
나의 풀이
function solution(s1, s2) {
let answer = s1.filter((e) => s2.includes(e)).length
return answer;
}
다른 풀이1
function solution(s1, s2) {
var answer = 0;
for (var i = 0; i < s1.length; i++){
for (var j = 0; j < s2.length; j++){
if(s1[i] === s2[j]) answer++;
}
}
return answer;
}
- 자바스크립트 기본문법들은 익숙해져가고 있지만, 아직 메소드를 어떻게 활용하는지와 어떤 메소드를 활용해야 하는지 조금 헷갈린다. 메소드에 대한 이해도가 떨어지는 부분도 있어서 문제를 보고 어떤 값을 구해야하는지는 아는데 어떻게 구현해야 하는지가 조금 어려운 것 같다
제주코딩베이스 캠프 정주행, 프로그래머스 0단계 풀고풀고 또풀고 해봐야겠다.