알고리즘 문제 간단 정리 03
알고리즘 03
알고리즘 간단 정리 세번째 글입니다.
1. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
{
function solution(a, b, c) {
if (a < b) answer = a;
else answer = b;
if (c < answer) answer = c;
return answer;
}
console.log(solution(2, 5, 1));
}
주어진 함수는 세 개의 숫자 중 가장 작은 값을 반환합니다.
- 먼저, 변수
answer
를 선언합니다. if (a < b)
를 통해 a가 b보다 작으면answer
에 a를 할당하고, 그렇지 않으면 b를 할당합니다.- 그 후,
if (c < answer)
를 통해 c가answer
보다 작으면answer
에 c를 할당합니다. - 마지막으로
answer
를 반환합니다.
따라서 console.log(solution(2, 5, 1));
을 호출하면 1이 반환됩니다. 왜냐하면 1이 세 숫자 중 가장 작기 때문입니다.
2. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
function solution(a, b, c) {
let answer = "YES",
max;
let sum = a + b + c;
if (a > b) max = a;
else max = b;
if (c > max) max = c;
if (sum - max <= max) answer = "NO";
return answer;
}
console.log(solution(13, 33, 17));
}
위의 코드는 세 변의 길이를 입력받아 삼각형이 만들어질 수 있는지를 판별하는 함수입니다.
answer
변수를 “YES”로 초기화합니다.- 세 변의 길이를 합하여
sum
변수에 저장합니다. - 가장 긴 변을 찾기 위해
a
,b
,c
중 가장 큰 값을max
변수에 할당합니다. - 가장 긴 변을 제외한 나머지 두 변의 길이의 합이 가장 긴 변의 길이보다 크지 않다면, 삼각형이 만들어질 수 없으므로
answer
를 “NO”로 변경합니다. - 최종적으로
answer
값을 반환합니다.
console.log(solution(13, 33, 17));
을 호출하면 13, 33, 17이 세 변의 길이로 주어지고, 이들을 가지고 만들 수 있는 삼각형을 판별합니다. 이 경우 가장 긴 변은 33이며, 나머지 두 변의 길이의 합은 30입니다. 이 값은 가장 긴 변의 길이보다 크므로 삼각형을 만들 수 없습니다. 따라서 함수는 “NO”를 반환합니다.
3. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
{
function solution(n) {
let answer;
answer = Math.ceil(n / 12);
return answer;
}
console.log(solution(25));
console.log(solution(178));
}
주어진 함수는 입력된 값 n
을 12로 나눈 후 올림하여 반환하는 코드입니다.
- 먼저,
answer
변수를 선언합니다. - 입력된 값
n
을 12로 나눈 결과를Math.ceil()
함수를 사용하여 올림합니다. 이 값을answer
에 할당합니다. - 최종적으로
answer
값을 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
2
console.log(solution(25)); // 출력 결과: 3
console.log(solution(178)); // 출력 결과: 15
첫 번째 호출에서는 25를 12로 나눈 결과를 올림하여 3을 반환합니다. 이는 25개의 아이템을 12개씩 담는다고 가정할 때 필요한 세트의 수를 의미합니다.
두 번째 호출에서는 178을 12로 나눈 결과를 올림하여 15를 반환합니다. 이는 178개의 아이템을 12개씩 담는다고 가정할 때 필요한 세트의 수를 의미합니다.
4. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
{
function solution(n) {
let answer = 0;
for(let i =1; i <=n; i++){
answer += 1;
}
return answer;
}
console.log(solution(10));
console.log(solution(6));
}
주어진 코드는 1부터 입력된 값 n
까지의 모든 정수를 더하는 함수입니다.
answer
변수를 0으로 초기화합니다.for
반복문을 사용하여 1부터n
까지의 정수를i
로 순회합니다.- 각 반복마다
answer
에 1씩 더합니다. - 최종적으로
answer
값을 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
2
console.log(solution(10)); // 1부터 10까지의 합인 55를 출력합니다.
console.log(solution(6)); // 1부터 6까지의 합인 21을 출력합니다.
따라서 첫 번째 호출에서는 1부터 10까지의 모든 정수를 더한 결과인 55가 반환되며, 두 번째 호출에서는 1부터 6까지의 모든 정수를 더한 결과인 21이 반환됩니다.
5. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
{
function solution(arr) {
let answer,
min = Number.MAX_SAFE_INTEGER; //arr[0]
for (let i = 0; i < arr.length; i++) {
if (arr[i] < min) min = arr[i];
}
answer = min;
return answer;
}
console.log(solution([5, 3, 7, 11, 2, 15, 17]));
}
주어진 함수는 주어진 배열에서 가장 작은 값을 찾아 반환하는 것입니다.
answer
와min
변수를 선언합니다.min
변수를Number.MAX_SAFE_INTEGER
로 초기화합니다.- 배열
arr
을 순회하면서 각 요소가min
보다 작으면min
값을 해당 요소의 값으로 갱신합니다. - 모든 요소를 확인한 후에는
min
값을answer
에 할당합니다. answer
를 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
console.log(solution([5, 3, 7, 11, 2, 15, 17])); // 출력 결과: 2
주어진 배열 [5, 3, 7, 11, 2, 15, 17]
에서 가장 작은 값은 2이므로, 이 값이 반환됩니다.
6. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
function solution(arr) {
let answer = [];
let sum = 0,
min = Number.MAX_SAFE_INTEGER;
for (let x of arr) {
if (x % 2 === 1) {
sum += x;
if (x < min) min = x;
}
}
answer.push(sum);
answer.push(min);
return answer;
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));
}
이 함수는 주어진 배열에서 홀수인 요소들의 합과 홀수 중에서 가장 작은 값을 반환합니다.
answer
배열을 선언합니다.sum
변수를 선언하고 0으로 초기화하고,min
변수를Number.MAX_SAFE_INTEGER
로 초기화합니다.- 배열
arr
을 순회하면서 각 요소x
가 홀수인지 확인합니다. - 홀수인 경우
sum
에 더하고, 현재 요소가min
보다 작으면min
값을 해당 요소의 값으로 갱신합니다. - 반복문을 마치고 나면,
sum
과min
값을answer
배열에 추가합니다. answer
배열을 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
console.log(solution([12, 77, 38, 41, 53, 92, 85])); // 출력 결과: [256, 41]
주어진 배열 [12, 77, 38, 41, 53, 92, 85]
에서 홀수인 요소들의 합은 256이고, 홀수 중에서 가장 작은 값은 41입니다. 따라서 [256, 41]
이 반환됩니다.
7. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
{
function solution(day, arr) {
let answer = 0;
for (let x of arr) {
if (x % 10 === day) answer++;
}
return answer;
}
arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));
console.log(solution(0, [12, 20, 54, 30, 87, 91, 30]));
}
이 함수는 배열 arr
에서 각 요소의 일의 자리가 주어진 day
와 일치하는 경우를 세는 것입니다.
answer
변수를 0으로 초기화합니다.- 배열
arr
을 순회하면서 각 요소x
의 일의 자리가 주어진day
와 일치하는지 확인합니다. - 일의 자리가
day
와 일치하는 경우answer
를 증가시킵니다. - 모든 요소를 확인한 후에는
answer
값을 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
2
console.log(solution(3, [25, 23, 11, 47, 53, 17, 33])); // 출력 결과: 3
console.log(solution(0, [12, 20, 54, 30, 87, 91, 30])); // 출력 결과: 3
첫 번째 호출에서는 배열 [25, 23, 11, 47, 53, 17, 33]
에서 일의 자리가 3인 요소가 3개 있으므로 결과는 3입니다.
두 번째 호출에서는 배열 [12, 20, 54, 30, 87, 91, 30]
에서 일의 자리가 0인 요소가 3개 있으므로 결과는 3입니다.
8. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
function solution(arr) {
let answer = arr;
let sum = arr.reduce((a, b) => a + b, 0);
for (let i = 0; i < 8; i++) {
for (let j = i + 1; j < 9; j++) {
if (sum - (arr[i] + arr[j]) === 100) {
arr.splice(j, 1);
arr.splice(i, 1);
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
}
이 함수는 주어진 배열에서 두 요소를 제거하여 합이 100이 되도록 하는 것입니다.
- 먼저,
answer
변수를 주어진 배열arr
로 초기화합니다. - 배열
arr
의 모든 요소를 합하여sum
변수에 저장합니다. - 두 개의 중첩된
for
반복문을 사용하여 배열에서 두 요소의 합이 100이 되는 조합을 찾습니다. - 조건을 만족하는 경우,
splice()
메서드를 사용하여 배열에서 해당 요소를 제거합니다. - 변경된 배열을 반환합니다.
위 함수를 호출한 결과는 다음과 같습니다:
1
console.log(solution([20, 7, 23, 19, 10, 15, 25, 8, 13])); // 출력 결과: [20, 7, 23, 19, 10, 8, 13]
주어진 배열 [20, 7, 23, 19, 10, 15, 25, 8, 13]
에서 두 요소를 제거하여 합이 100이 되도록 하는 조합은 [20, 7, 23, 19, 10, 8, 13]
입니다. 따라서 이 배열이 반환됩니다.
이렇게 오늘도 8개정도 정리했보았습니다. 오늘도 필자의 부족한 글 읽어주셔서 감사합니다.