프로그래밍 언어의 문법에 익숙하지 않거나 라이브러리 사용 경험이 많이 없을 경우 더욱 어렵게 느껴질 수 있는 문제이다.
먼저 코딩 테스트 시스템의 제약에 대해 알아보자
보통 채점시 시간 제한과 메모리 제한이 주어질 수 있다. 이때, 시간 제한과 데이터의 개수를 먼저 확인 한 뒤에 이 문제를 어느 정도의 시간 복잡도 알고리즘으로 풀 수 있을 것인지 예측 할 수 있어야 한다.
예를 들어 시간 제한이 1초이고, 데이터의 개수가 100만 개 일때, 일반적으로 시간 복잡도 O(NlogN)이내의 알고리즘을 이용하여 문제를 풀어야 한다.
R이면 y하나 늘리고, L이면 y를 하나 내리기
D이면 x를 하나 늘리고, U이면 x를 하나 내리기
이후에 계산된 x와 y들이 범위안에 있는지 검토 후 실제 값에 적용
const solution = (number, inputArray) => {
let x=1, y=1;
const array = inputArray.split(' ');
for(let value in array){
const now = array[value];
let tempX=x;
let tempY=y;
if(now === 'R') tempY++;
else if(now === 'L') tempY--;
else if(now === 'U') tempX--;
else if(now === 'D') tempX++;
if(tempY > 0 && tempY <= number) y = tempY;
if(tempX > 0 && tempX <= number) x = tempX;
}
return `${x} ${y}`
}
console.log(solution(5,'R R R U D D'));
const solution = (number, inputArray) => {
let x=1, y=1;
const array = inputArray.split(' ');
for(let value in array){
switch(array[value]){
case 'R':
y < number && y++;
break;
case 'L':
y > 1 && y--;
break;
case 'D':
x < number && x++;
break;
case 'U':
x > 1 && x--;
break;
}
}
return `${x} ${y}`
}
console.log(solution(5,'R R R U D D'));
const solution = (num) => {
let result = 0;
let count = num;
while(count>0){
if(count === 3 || count === 13 || count === 23){
result += 60*60;
}else{
result += (54*6) + (60*6);
}
}
return result;
}
console.log(solution(5));
let count = 0;
const BOARD_SIZE = 8;
const solution = (input) => {
const array = input.split('');
const x = array[0].charCodeAt(0) - 96;
const y = Number(array[1]);
checkFirstDeep(x,y);
checkFirstDeep(y,x);
return count;
}
const checkFirstDeep = (value, value2) => {
if(value + 2 <= BOARD_SIZE) checkSecondDeep(value2);
if(value -2 > 0) checkSecondDeep(value2);
}
const checkSecondDeep = (value) => {
if(value+1 <= BOARD_SIZE) count++;
if(value-1 > 0) count++;
}
console.log(solution('g7'))
function solution(place) {
const col = parseInt(place[0].charCodeAt(0)) - 96; // a ~ h -> 1 ~ 8
const row = parseInt(place[1]); // 0 ~ 8
const stepList = [[-2, 1], [-2, -1], [2, 1], [-2, -1], [1, -2], [1, 2], [-1, 2], [-1, -2]];
let count = 0;
for(let i = 0; i < stepList.length; i++) {
let stepCol = stepList[i][0];
let stepRow = stepList[i][1];
if((col + stepCol >= 1 && row + stepRow >= 1) && (col + stepCol <= 8 && row + stepRow <= 8)) {
count++;
}
}
console.log(count);
return count;
}
// 실행 결과 8개
solution("e4");
// 실행 결과 2개
solution("a1");