문제1 편지
머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 공백도 하나의 문자로 취급합니다.
- 1 ≤ message의 길이 ≤ 50
- 편지지의 여백은 생각하지 않습니다.
- message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다.
입출력 예
message | result |
"happy birthday!" | 30 |
"I love you~" | 22 |
function solution(message) {
let answer = 0;
let messageLength = message.length;
answer = messageLength * 2;
return answer;
}
변수 `answer`를 0으로 초기화합니다. 이 변수는 필요한 편지지의 가로 길이를 저장하기 위한 변수입니다.
`message`의 길이를 `messageLength` 변수에 저장합니다. 이는 `message`에 포함된 글자 수를 의미합니다.
`messageLength`에 2를 곱하여 필요한 편지지의 가로 길이를 계산합니다. 각 글자가 2cm 크기로 적히기 때문에 가로 길이는 글자 수에 2를 곱한 값이 됩니다.
`answer` 변수에 계산된 가로 길이를 저장합니다.
`answer`를 반환하여 결과를 출력합니다.
문제2 가장 큰 수 찾기
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array 원소 ≤ 1,000
- array에 중복된 숫자는 없습니다.
입출력 예
array | result |
[1, 8, 3] | [8, 1] |
[9, 10, 11, 8] | [11, 2] |
function solution(array) {
var max = Math.max(...array);
var index = array.indexOf(max);
var answer = [max, index];
return answer;
}
`Math.max(...array)`를 사용하여 배열 `array`에서 가장 큰 수를 찾습니다. `...array`는 배열의 요소를 개별적인 인수로 전달하기 위해 사용됩니다.
`array.indexOf(max)`를 사용하여 가장 큰 수 `max`의 인덱스를 찾습니다. `indexOf` 메서드는 배열에서 특정 요소의 첫 번째 인덱스를 반환합니다.
`answer` 배열에 `max`와 `index`를 담습니다. `answer` 배열은 가장 큰 수와 그 수의 인덱스를 담을 용도로 사용됩니다.
`answer` 배열을 반환하여 결과를 출력합니다.
문제3 문자열 계산하기
my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
제한사항
- 연산자는 +, -만 존재합니다.
- 문자열의 시작과 끝에는 공백이 없습니다.
- 0으로 시작하는 숫자는 주어지지 않습니다.
- 잘못된 수식은 주어지지 않습니다.
- 5 ≤ my_string의 길이 ≤ 100
- my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
- my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
- 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
- my_string에는 연산자가 적어도 하나 포함되어 있습니다.
- return type 은 정수형입니다.
- my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.
입출력 예
my_string | result |
"3 + 4" | 7 |
function solution(my_string) {
const arr = my_string.split(' ');
let answer = Number(arr[0]);
for(let i=1; i<arr.length; i+=2){
const op = arr[i];
const num = Number(arr[i+1]);
if(op === '+'){
answer += num
} else {
answer -= num
}
}
return answer;
}
주어진 수식인 `my_string`을 공백을 기준으로 분리하여 `arr` 배열에 저장합니다.
`arr` 배열의 첫 번째 요소를 가져와서 `answer` 변수에 저장합니다. `Number()` 함수를 사용하여 문자열을 숫자로 변환합니다.
`for` 반복문을 사용하여 수식을 순회합니다. `i` 변수를 1부터 시작하여 2씩 증가시키면서 연산자와 숫자를 차례로 가져옵니다.
현재 연산자인 `op`를 확인하여 덧셈(`+`)인 경우에는 `answer`에 숫자를 더하고, 뺄셈(`-`)인 경우에는 `answer`에서 숫자를 뺍니다.
모든 연산이 완료되면 최종 결과인 `answer`를 반환합니다.
문제4 배열의 유사도
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력 예
s1 | s2 |
result |
["a", "b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
function solution(s1, s2) {
let answer = 0;
for (let i = 0; i < s1.length; i++) {
if (s2.includes(s1[i])) {
answer++;
}
}
return answer;
}
`answer` 변수를 초기화합니다.
`for` 반복문을 사용하여 배열 `s1`을 순회합니다.
각 원소 `s1[i]`를 배열 `s2`에서 찾아보기 위해 `includes()` 메서드를 사용합니다. 만약 `s2`에 `s1[i]`가 포함되어 있다면, 같은 원소이므로 `answer`를 증가시킵니다.
모든 반복이 완료되면 같은 원소의 개수인 `answer`를 반환합니다.