✅ check
str.slice()
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string | n | result |
---|---|---|
"ProgrammerS123" | 11 | "grammerS123" |
"He110W0r1d" | 5 | "W0r1d" |
const solution = (my_string, n) => {
return my_string.slice(-1*n)
}
📍 **
str.slice()
- 첫 번째 인수로 전달받은 인덱스에 위치하는 문자부터 두 번째 인수로 전달받은 인덱스에 위치하는 문자의 바로 이전 문자까지의 부분 문자열 반환
- 인수가 음수일 경우 대상 문자열의 가장 뒤에서부터 시작하여 문자열을 잘라내어 반환
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
n | control | result |
---|---|---|
0 | "wsdawsdassw" | -1 |
const solution = (n, control) => {
let answer = n;
control.split('').forEach(el => {
if( el === 'w'){
answer += 1;
}if(el === 's'){
answer -= 1;
}if(el === 'd'){
answer += 10;
}if(el === 'a'){
answer -= 10;
}
})
return answer;
}
// switch
function solution(n, control) {
for(let i = 0 ; i < control.length ; i++){
switch(control[i]) {
case "w" : n++;break;
case "s" : n--;break;
case "d" : n+=10;break;
case "a" : n-=10;break;
}
}
return n;
}
// 로직 분리, reduce 활용
const operations = {
w: (n) => n + 1,
s: (n) => n - 1,
d: (n) => n + 10,
a: (n) => n - 10,
};
function solution(n, control) {
return [...control].reduce((prev, op) => operations[op](prev), n);
}
📍
switch
- 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는
case
문으로 이동,default
는 optional
switch ( 표현식 ){
case 표현식 1:
switch 문의 표현식과 표현식1이 일치될 경우 실행될 코드;
break;
case 표현식 2:
switch 문의 표현식과 표현식2이 일치될 경우 실행될 코드;
break;
default: // 생략 가능
switch 문의 표현식과 일치하는 case 가 없을 때 실행될 코드;
}
📍
arr.reduce()
와arr.forEach()
,arr.map()
사용 비교 !
arr.reduce()
: 배열을 순회하며 누적값을 계산하여 최종 결과를 도출할 경우arr.forEach()
: 단순 반복작업, 사이드이펙트가 있는 작업을 수행할 경우arr.map()
: 배열의 각 요소를 변환하여 새로운 배열을 생성할 경우
📍
arr.forEach()
- 배열의 각 요소에 대해 사이드 이펙트를 일으키는 반복적인 작업을 수행할 때 사용한다. 반환값은
undefined
이고 순수하게 '반복'만을 목적으로 한다. 원본 배열을 수정하거나 새로운 배열을 반환하지 않는다.
📍
arr.map()
- 배열의 각 요소를 변환하여 새로운 배열을 생성할 때 사용한다. 반환값은 변환된 요소들로 생성된 새로운 배열이다. 각 요소를 순회하여 변환하기 때문에 기존 배열의 크기가 유지된다.
📍
arr.reduce()
- 배열의 요소들을 순회하며 하나의 누적 값을 도출할 때 사용한다. 반환값은 누적된 '하나의 값' 이고 콜백 함수에서 반환되며 초기값 설정이 가능하다.
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
입력 #1: aBcDeFg
출력 #1: AbCdEfG
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = [line];
}).on('close',function(){
str = input[0];
let char = str.split('');
let answer = char.map(el => {
return el === el.toUpperCase() ? el.toLowerCase() : el.toUpperCase()
})
console.log(answer.join(''))
});
📍 node.js 를 활용한 코드이다 !
📍str.toUpperCase()
와str.toLowerCase()
let answer = char.map(el => { return el === el.toUpperCase() ? el.toLowerCase() : el.toUpperCase() })
str.toUpperCase()
와str.toLowerCase()
를 조건문에 사용해서 비교하게 되면 대문자인지 소문자인지 확인해서 boolean값을 반환하고 조건을 확인하여 대문자인 경우 소문자로, 소문자인 경우 대문자로 변환한다.