✅
check
틸트 문법
:~
,~~
Array.from(string)
,[...string]
,string.split('')
let a of b
repeat(count)
split(separator, limit)
toUpperCase()
,toLowerCase()
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
n | k | result |
---|---|---|
10 | 3 | 124,000 |
64 | 6 | 768,000 |
function solution(n, k) {
let service = 0;
if( n >= 10 ) {
service = Math.floor(n / 10)
}
return (n * 12000) + (k-service)* 2000;
}
function solution(n, k) {
k-=~~(n/10); // 틸트 문법
if (k < 0) k = 0;
return n*12000+k*2000;
}
📌
틸트 문법
~
: -(n+1)~~
:Math.floor
와 비슷
양수에서는 동일하게 작동하나, 음수의 경우 Math.floor(-1.1)는 -2 출력, ~~(-1.1)는 -1 출력
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
money | result |
---|---|
5,500 | [1, 0] |
15,000 | [2, 4000] |
function solution(money) {
let price = 5500;
let result = [0, 0]
result[0] = Math.floor(money / price)
result[1] = money % price;
return result;
}
function solution(money) {
return [Math.floor(money / 5500), money % 5500];
}
따로 배열을 선언하지 않고 바로 반환 값으로 작성해도 된다 !
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | return |
---|---|
"jaron" | "noraj" |
"bread" | "daerb" |
function solution(my_string) {
return Array.from(my_string).reverse().join('');
}
function solution(my_string) {
var answer = [...my_string].reverse().join("");
return answer;
}
function solution(my_string) {
return my_string.split('').reverse().join('');
}
📌 문자열을 배열로 변환하기
Array.from(string)
[...string]
string.split('')
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
sides | result |
---|---|
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
function solution(sides) {
sides.sort((a, b)=> a - b)
return sides[0] + sides[1] > sides[2] ? 1 : 2
}
function solution(sides) {
const [long, a, b] = sides.sort((a,b) => b-a);
return long < a + b ? 1 : 2
}
구조 분해 할당과 명시적인 변수명을 통해 파악이 좀 더 용이하다 !
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
num_list | result |
---|---|
[1, 2, 3, 4, 5] | [2, 3] |
[1, 3, 5, 7] | [0, 4] |
function solution(num_list) {
let odd = [];
let even = [];
num_list.forEach((el) => el % 2 === 0? even.push(el) : odd.push(el))
return [even.length, odd.length]
}
function solution(num_list) {
var answer = [0,0];
for(let a of num_list){
answer[a%2] += 1
}
return answer;
}
📌
let a of b
const iterable = [1,2,3]; for (let value of iterable) { console.log(value); }
value
: 반복을 돌면서 각각의( 서로 다른 ) 값을 value에 저장iterable
: 반복할 수 있는 객체( 배열, 문자열, arguments 등 )
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
my_string | n | result |
---|---|---|
"hello" | 3 | "hhheeellllllooo" |
const solution = (my_string, n) => {
const strArr = Array.from(my_string);
let multipled = [];
strArr.forEach((el) => {for(let i = 0; i < n; i ++){multipled.push(el)}})
return multipled.join('')
}
function solution(my_string, n) {
var answer = [...my_string].map(v => v.repeat(n)).join("");
console.log(answer);
return answer;
}
📌
repeat()
str.repeat(count)
: 'str'을 count 만큼 반복해 붙인 새로운 문자열을 반환- count는 정수여야 하고 만약 3.2 등을 전달하여도 정수로 변환하여 수행된다. ( 3.2 -> 3 )
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | letter | result |
---|---|---|
"abcdef" | "f" | "abcde" |
"BCBdbe" | "B" | "Cdbe" |
const solution = (my_string, letter) => {
let strArr = Array.from(my_string)
strArr = strArr.filter((el) => el !== letter )
return strArr.join('');
}
console.log(solution("abcdef", 'f'))
// 1. split
function solution(my_string, letter) {
const answer = my_string.split(letter).join('')
return answer;
}
// 2. replace
function solution(my_string, letter) {
return my_string.replaceAll(letter, "");
}
// 3. 정규 표현식
function solution(my_string, letter) {
let reg = new RegExp(letter, 'g');
return my_string.replace(reg, '');
}
📌
split(separator, limit)
separator(optional)
: 원본 문자열을 끊을 때 사용하는 기준점, 생략할 경우 문자마다 끊어서 반환limit(optional)
: 끊어진 문자열의 최대 개수
const greeting = 'hello'; greeting.split('', 3) // [h,e,l]
- 반환 값: 주어진 문자열을 separator마다 끊은 부분 문자열을 담은 배열
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
my_string | result |
---|---|
"aAb1B2cC34oOp" | 10 |
"1a2b3c4d123" | 16 |
function solution(my_string) {
let numArr = [];
let strArr = Array.from(my_string);
strArr.forEach(el => {
let num = Number(el);
isNaN(num) ? '' : numArr.push(num)})
return numArr.reduce((acc, cur) => acc + cur)
}
function solution(my_string) {
// reduce로 숫자이면 합산하고 아니면 무시한다. 1번의 반복
return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
function solution(my_string) {
// replace와 정규 표현식으로 숫자만 변환 후 reduce로 합산
const answer = my_string.replace(/[^0-9]/g, '')
.split('')
.reduce((acc, curr) => acc + Number(curr), 0);
return answer;
}
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | result |
---|---|
"cccCCC" | "CCCccc" |
"abCdEfghIJ" | "ABcDeFGHij" |
const solution = (my_string) => {
let result = [];
for(let i = 0; i < my_string.length; i ++){
if( my_string[i] === my_string[i].toUpperCase()){
result.push(my_string[i].toLowerCase())
}
if( my_string[i] === my_string[i].toLowerCase()){
result.push(my_string[i].toUpperCase())
}
}
return result.join('');
};
function solution(my_string) {
var answer = '';
for (let c of my_string) answer += c === c.toLowerCase() ? c.toUpperCase() : c.toLowerCase();
return answer;
}
📌
toUpperCase()
와toLowerCase()
toUpperCase()
: 문자열을 대문자로 변환하여 반환/ 이미 대문자인 경우 true 반환toLowerCase()
: 문자열을 소문자로 변환하여 반환/ 이미 소문자인 경우 true 반환let greeting = 'hello'; greeting.toUpperCase(); const check = () => { console.log(greeting === greeting.toUpperCase()) // false }
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
rsp | result |
---|---|
"2" | "0" |
"205" | "052" |
const solution = (rsp) => {
return Array.from(rsp).map((el) => { return el === '2' ? '0' : el === '0' ? '5' : '2' }).join('')
}
// 각각 대응하는 것이 있을 경우 객체를 사용하여 좀 더 명시적으로 표현할 수 있다.
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}