문제 1: 배열 요소 중 최솟값 구하기 (기본 최솟값 문제가 몇개있어서 한문제만 올리기)
function solution2(arr) {
// 배열을 인자로 넘겨줘야하므로, ...arr 로 배열의 요소를 풀어서 담아준다.
return Math.min(...arr);
}
console.log(solution2([5, 7, 1, 3, 2, 9, 11]); // 1
function solution2(arr) {
// [1, 2, 3, 5, 7, 9, 11][0] === arr[0] => 1
return arr.sort((a,b) => a - b)[0];
}
console.log(solution2([5, 7, 1, 3, 2, 9, 11])); //1
문제 2 : 길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어짐, 세 막대로 삼각형을 만들 수 있 으면 “OK"를 출력하고,만들 수 없으면 ”NO"를 출력해라.
접근 방식 : 세 막대(세 변이) 삼각형이 될 수 없는 조건과 될 수 있는 조건을 생각해라
조건 : 세변의 길이가 주어질때, 가장 긴변의 길이는 나며지 두 변의 길이의 합보다 작아야한다고 한다.
풀이)
레퍼런스 코드는 거의 비슷하게 다른 방식으로 푸셨다.
전체 변의 길이 - 가장 큰변의 길이를 뺀 값과 전체변의 길이에서 두변의 길이를 뺀 값을 다시 비교하는 방식히였다.
// 내 코드
function solution(a, b, c) {
let arr = [a,b,c].sort((a,b) => a - b);
return arr[2] < arr[0] + arr[1] ? "OK" : "NO"
}
console.log(solution(33, 30, 50)); // OK
// if문으로 쓴다면? 이런 방식이다.
function solution(a, b, c) {
let arr = [a,b,c].sort((a,b) => a - b);
if (arr[2] < arr[0] + arr[1]) {
return "OK"
} else {
return "NO"
}
}
console.log(solution(33, 30, 50));
문제 3 : n명의 학생에게 1명당 연필 1자루를 나누어 줄때 몇 다스가 필요한지 구해라. (1다스 =12자루/ 학생수 <= 1000명)
접근 방식
풀이)
1. 12자루가 1다스니깐, 학생수 n / 12로 나눠서 다스의 개수를 구한다.
2. 이때 소숫점( 자루 )가 나올경우를 생각하여 Math메소드를 사용하여 올림을 해준다.
(소숫점있을 시 다스 +1 한개 늘어남)
function solution(n) {
return Math.ceil(n / 12);
//(n / 12) => 178/12 => 14.833333333333334 // 소수점이 나올경우 !
// Math.ceil() => 15가 된다.
}
console.log(solution(178));
문제 4: 1부터 자연수 N까지의 합을 출력해라
풀이)
function solution(n){
let result=0;
for(let i = 1; i <= n; i++){
// result = result + i;
result += i;
}
return result;
}
console.log(solution(5)) // 15
문제 5: 자신이 난쟁이라고 하는 9명이있다. 진짜 난쟁이 7명 키의 합은 100이라고 한다. 진짜 난쟁이를 찾아 일곱 난쟁이의 키를 나열해라 **
주어지는 값 : 난쟁이 9명 키 : [20, 7, 23, 19, 10, 15, 25, 8, 13]
접근 방법) 7명의 난쟁이들의 키가 100이니깐, 2명의 난쟁이의 키만 뺴서 100이 나오면된다.
풀이)
function solution(arr){
let sum = arr.reduce((acc,cur)=> acc + cur,0);;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if((sum - (arr[i] + arr[j])) === 100) {
console.log(arr); //[20, 7, 23, 19, 10, 15, 25, 8, 13] // 15, 25 가 제거되는 상황
arr.splice(i, 1); //인덱스(i)번째 요소 1개 제거
console.log(arr); // [20, 7, 23, 19, 10, 25, 8, 13]
arr.splice(j-1, 1); // 15가 제거되어 15의 인덱스가 6 -> 5로 바뀜
// 인덱스 i번째 요소가 제거되어서 전체적인 베열이 1 인덱스씩 당겨지므로 -1 을 해야 삭제되길 원하는 요소가 삭제된다.
}
}
}
return arr;
}
let arr=[20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr)); // [20, 7, 23, 19, 10, 8, 13]