1. 룩업 테이블
입력에 따른 결과를 정해둘 때 사용
// 가위바위보 예제
// 1 = 가위, 2 = 바위, 3 = 보
function solution(a, b) {
let answer = "";
let lookupTable = {
"1-3": "A ",
"2-1": "A ",
"3-2": "A "
};
for (let i = 0; i < a.length; i++) {
let key = `${a[i]}-${b[i]}`;
if (a[i] === b[i]) answer += "D ";
else answer += lookupTable[key] ? lookupTable[key] : "B ";
}
return answer;
}
let c=[2, 3, 3, 1, 3];
let d=[1, 1, 2, 2, 3];
console.log(solution(c,d));
2. 정규표현식
문자열에서 조건에 맞는 문자인지 확인
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions
/hello/ = hello
/[a-z]/ = 소문자 알파벳
/ab+c/ = a 다음에 b가 하나 이상, 그리고 c
/^a/ = a로 시작
/a$/ = a로 끝
/[a-z]/i = 대소문자 구분 없이
/[a-z]/g = 전역 검색
/[a-z]/ig = 대소문자 구분 없이 전역 검색
/[^a-z]/ = 소문자가 아닌 다른 문자
function solution(s){
return s.replaceAll(/[^a-z]/gi,'').toLowerCase()===s.replaceAll(/[^a-z]/gi,'').toLowerCase().split('').reverse().join('') ? 'YES' : 'NO'
}
let str="found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
3. 각 자릿수 더하기
숫자를 문자형으로 변형 후 split 한 뒤 숫자로 더하는 것보다 while문을 사용해 n%10 나머지를 더하는 것이 좋다.
function solution(n, arr) {
let result = 0;
for (let i = 0; i < n; i++) {
let num = arr[i];
let sum = 0;
while (num > 0) {
sum += num % 10;
num = Math.floor(num / 10);
}
result = Math.max(result, sum);
}
return result;
}
function solution(n, arr){
let answer, max=Number.MIN_SAFE_INTEGER;
for(let x of arr){
let sum=0, tmp=x;
while(tmp){
sum+=(tmp%10);
tmp=Math.floor(tmp/10);
}
if(sum>max){
max=sum;
answer=x;
}
else if(sum===max){
if(x>answer) answer=x;
}
}
return answer;
}