코딩테스트 16일차
편지
머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.
function solution(message) {
var answer = message.length * 2;
return answer;
}
✅풀이
message 변수를 매개변수로 받습니다. 이 변수는 편지지에 적을 축하 메시지를 나타냅니다.
message.length를 사용하여 message 문자열의 길이를 구합니다. message.length는 문자열의 길이를 반환하는 JavaScript 내장 함수입니다. 예를 들어, message가 "Happy birthday!"라는 문자열이라면 message.length는 15를 반환합니다.
message.length에 2를 곱하여 편지지의 최소 가로길이를 구합니다. 문제에서는 글자 하나를 가로로 적을 때 2cm를 사용한다고 가정했습니다. 따라서, message.length * 2를 계산하면 편지지에 축하 메시지를 적기 위해 필요한 최소 가로길이가 됩니다.
answer 변수에 message.length * 2를 할당합니다. 이렇게 하면 answer에 최소 가로길이가 저장됩니다.
answer를 반환하여 최소 가로길이를 출력합니다.
가장 큰 수 찾기
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
function solution(array) {
var maxNumber = Math.max(...array); // 가장 큰 수 찾기
var index = array.indexOf(maxNumber); // 가장 큰 수의 인덱스 찾기
var answer = [maxNumber, index]; // 결과 배열 생성
return answer;
}
✅풀이
array 변수를 매개변수로 받습니다. 이 변수는 정수 배열을 나타냅니다.
Math.max(...array)를 사용하여 배열 array에서 가장 큰 수를 찾습니다. Math.max()는 전달된 인수 중에서 가장 큰 값을 반환하는 JavaScript 내장 함수입니다. ...array는 전개 연산자로, 배열을 개별 요소로 분리하여 전달하게 합니다. 예를 들어, array가 [5, 8, 3, 9, 2]라면 Math.max(...array)는 9를 반환합니다.
array.indexOf(maxNumber)를 사용하여 가장 큰 수 maxNumber의 인덱스를 찾습니다. indexOf() 메서드는 배열에서 주어진 요소의 첫 번째 인덱스를 반환합니다. 따라서, array.indexOf(maxNumber)는 maxNumber의 인덱스를 반환합니다. 예를 들어, array가 [5, 8, 3, 9, 2]이고 maxNumber가 9라면 array.indexOf(maxNumber)는 3을 반환합니다.
[maxNumber, index]를 사용하여 가장 큰 수와 해당 수의 인덱스를 담은 결과 배열 answer를 생성합니다. 이 배열은 [가장 큰 수, 인덱스] 형태로 구성됩니다. 예를 들어, maxNumber가 9이고 index가 3이라면 answer는 [9, 3]이 됩니다.
answer를 반환하여 가장 큰 수와 해당 수의 인덱스를 담은 배열을 출력합니다.
문자열 계산하기
my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
function solution(my_string) {
var answer = eval(my_string); // 수식 계산
return answer;
}
✅풀이
my_string 변수를 매개변수로 받습니다. 이 변수는 문자열 형태의 수식을 나타냅니다.
eval(my_string)을 사용하여 my_string을 평가합니다. eval() 함수는 주어진 문자열을 JavaScript 코드로 실행하고 결과를 반환합니다. 즉, my_string에 포함된 수식을 계산하여 결과를 얻습니다.
계산된 결과를 answer 변수에 할당합니다. eval() 함수의 반환값인 계산 결과가 answer에 저장됩니다.
answer를 반환하여 수식을 계산한 결과를 출력합니다.
배열의 유사도
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(s1, s2) {
var answer = 0;
for (var i = 0; i < s1.length; i++) {
if (s2.includes(s1[i])) {
answer++;
}
}
return answer;
}
✅풀이
var answer = 0;
변수 answer를 선언하고 초기값을 0으로 설정합니다. 이 변수는 두 배열의 같은 원소의 개수를 저장하는 역할을 합니다.
for (var i = 0; i < s1.length; i++) { ... }
for 반복문을 사용하여 배열 s1의 각 원소에 접근합니다. i는 현재 순회하고 있는 원소의 인덱스를 나타냅니다.
if (s2.includes(s1[i])) { ... }
if 조건문을 사용하여 배열 s2에 현재 원소 s1[i]가 포함되어 있는지 확인합니다. s2.includes(s1[i])는 배열 s2에 원소 s1[i]가 포함되어 있다면 true를 반환하고, 포함되어 있지 않다면 false를 반환합니다.
answer++;
s2에 s1[i]와 동일한 원소가 있다면, 즉 조건문이 true라면 answer 변수를 1 증가시킵니다. 이는 두 배열에서 같은 원소를 발견할 때마다 개수를 증가시키는 역할을 합니다.
return answer;
answer 변수의 최종 값을 반환합니다. 이 값은 두 배열의 같은 원소의 개수를 나타냅니다.