머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
결국에는 소스코드로 구현을 해야하니까 결국 모든 문제를 구현 문제라고도 할 수 있지만
흔히 구현이 어렵거나 구현에 초점을 맞춘 문제들
행렬
function secondD(arr){
let x=1;
let y=1;
for(let a of arr){
if(a === "R"){
if(y<arr.length-1)y = y+1;
}
if(a === "L"){
if(y<3)y = y-1;
}
if(a === "U"){
if(x<3)x = x-1;
}
if(a === "D"){
if(x<arr.length-1)x = x+1;
}
}
return [x,y]
}
=> 나는 결과적으로 했는데
=> 하나하나 1,n과 비교하면서 continue할 것들을 잡아주는 것이 더 효율적
초 03 13 23 ... 53 [6]
초 30 ...39 [10]
-> 33은 중복
//15개
분 03 13 23 ... 53
31 ...39
// 15개
시 1~N까지 : 3이 있으면 아예 없어야
//00분 00초 ~ 59분 59초 : 분마다 0-59
60 * 60
function timer(N){
let h =1;
let m =1;
let s =1;
while(h<N+1){
if(String(h).includes('3')){
count++;
continue;
}else if(String(m).includes('3')){
count++;
continue;
}else if(String(s).includes('3')){
count++;
continue;
}
s++;
if(m === 60){h++; }
if(s === 60){m++; }
}
return count
}
function Knight(num){
let x =num.charCodeAt(0)-'a'.charCodeAt(0)+1, y =Number(num[1]); // a : 97
let subX = [2, 2, -2, -2, -1, -1, 1, 1,]
let subY = [-1, 1, 1, -1, -2, 2, 2, -2 ]
let dx=x, dy=y;
let count=0;
for(let i=0; i<8; i++){
dx = x+subX[i]
dy = y+subY[i]
if(dx > 0 && dy > 0 && dx < 9 && dy < 9 )count++;
}
return count;
}
function matching(str){
let alphabet = /[A-Z]/g
let num = /[0-9]/g
let string = str.match(alphabet).sort().reduce((acc,cur)=> acc+cur, '')
let number = str.match(num).reduce((acc, cur)=> acc+Number(cur), 0)
return string + number
}