문제 풀이 과정 첫 번째 입력 예시인 5 RRULD 5 2 4 3 2 를 기준으로 답인 3이 나오기까지의 과정을 그려보자면 위와 같다. 시작점 (0, 0)에는 1점이 있고, 방향 커맨드를 따라 빈 곳에 블럭을 놓다가 이미 채워진 공간이 있으면 해당 블럭이 놓여지기 직전 시점으로 '뒤로 감기'를 하듯 쌓았었던 블럭을 제거해야한다. 즉, N 번째 블럭을 쌓기 위해 M 번째 블럭을 제거해야한다면 M에서 ~ N-1 번째 블럭을 없애야 하므로 다음과 같은 접근으로 풀었다. 1. LRUD 키워드를 바탕으로 이동할 방향의 정보가 담긴 dirDict 객체를 생성한다. 2. queue에 첫 번째 블록인 [0, 0, 1]을 넣는다. queue에는 현재 쌓인 블록들의 정보를 [x좌표, y좌표, score] 배열들로 저장할 ..
padStart() String.prototype.padStart() 메서드는 현재 문자열 String.prototype의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환한다. 첫 번째 인자는 주어진 길이, 두 번째 인자는 채울 문자열이다. 채워넣기는 대상 문자열의 왼쪽부터 적용된다. const word = 'Tissue'; const newWord = word.padStart(10, 'C'); // 새로운 문자열을 반환하므로 - console.log(word); // "Tissue" - 원본은 유지된다 console.log(newWord); // "CCCCTissue" 두 번째 인자의 문자열의 길이가 2 이상일 때엔, 패턴처럼 반복되다가 첫 번째 인자로 주어진 정수와 일치하는 ..
문제 위의 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오. 풀이 과정 다이나믹 프로그래밍 입문 문제인 백준의 피보나치 함수 문제와 유사하다. 규칙을 찾아 점화식을 작성하면 끝 ... 인데, 어딘가 요상한 규칙으로 풀었다 -.- 제출 코드 const readline = require("re..
String.prototype.substring()은 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환하는 메서드이다. const word = 'Algorithm'; console.log(word.substring(3, 5)); // or console.log(word.substring(2)); // gorithm console.log(word.substring(-1)); // Algorithm 파이썬에서의 슬라이싱 방법인 str[n:m]과 비슷해보이지만, [-1]과 같은 음수 인덱스를 넣으면 substring(0))으로 처리되어 전체 문자열을 반환하게 된다. 만약 음수 인덱스로 문자열을 슬라이싱하고 싶다면 .slice()를 사용하자. const word = 'Algorithm' co..
문제 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 저장된 n을 다음과 같이 변환한다. n의 네 자릿수를 d1, d2, d3, d4라고 하자(즉 n = ((d1 × 10 + d2) × 10 + d3) × 10 + d4라고 하자) D: D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다. S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다. L: L 은 n의 각 자릿..
문제 뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다. 주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까? 게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다. 플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 만약 주사위를 굴린 결과가 100번 칸을 넘어간다면 이동할 수 없다. 도착한 칸이 사다리면, 사다리를 타고 위로 올라간다. 뱀..