분류 전체보기
[백준] 1932번 정수삼각형 - JavaScript(NodeJS)
문제 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 다음 삼각형에서 꼭대기에서 아래로 내려오면서, 대각선으로 이동한다. 선택한 수의 합이 최대일 때를 구하면 된다. 삼각형의 크기 N은 (1 0->0 인덱스를 거쳐가므로 1개의 경우의 수만 존재한다. dp[N-1][N-1]의 값은 0->1->2->3...의 각 행의 마지막 인덱스를 거쳐가므로 1개의 경우의 수만 존재한다. dp[N-1][K]의 값은 K를 도착한 모든 경우의 수 중 가장 큰 값을 구하면 된다. K 인덱스 위치에 도착할 수 있는 방법은 이전 층(N-2 층)의 K..
[백준] 1309번 동물원 - JavasScript(NodeJS)
문제 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 풀이 DP(동적 계획법) 문제이므로 DP로 접근한다. 다음 N * 2 행렬의 N번째 행만을 기준으로 생각하자. N번째 행에 사자가 없다면 E, 사자가 있다면 I로 나타내본다. N=1일 때, 경우의 수는 E=1, I=2 로 총 3이다. N=2일 때, N=1의 경우의 수 각각에 2번째 행이 생성되었을 때를 생각하면 E=1로부터 E=1, I=2 생성 I=2로부터 각각 E=1, I=1이 생성되므로 총 E=2, I=2가 생성 그러므로 N=2의 경우의 수는 E=1+2, I=2+2로 총 7이다. 계속해서 진행하면, N=3일 때, N=2의 경우의 수 각각에 3번째 행이 생성되므로 E=3으로부터 E=3, ..
[기초 알고리즘] 최대공약수 최소공배수 찾기(유클리드 호제법) - 자바스크립트
유클리드 호제법 유클리드 호제법이란, 2개의 자연수의 최대공약수를 구하는 알고리즘 중 하나이다. 유클리드 호제법에 의하면 A와 B 두 수의 최대공약수를 구할 때, A = Bq+r의 식으로 만든 뒤 B와 r의 최대공약수를 구하는 문제로 바꿀 수 있다. 연속되는 B, r의 최대공약수에 대해서도 B = rq+r2 와 같이 재귀가 가능하다. 최대공약수는 A,B 모두 나누어 떨어뜨리는 최대의 약수이므로, r=0 일 때 B의 값이 최대공약수이다. 최대공약수 구하기 유클리드 호제법을 이용해 최대공약수를 구해보자. 반복문 사용하기 function gcd(a,b){ let c = 0; while(b !== 0){ c = a % b; a = b; b = c; } return a; } 재귀함수로 만들기 function gc..
[자바스크립트] 동등 비교 연산자 "==" 와 일치 비교 연산자 "==="
비교 연산자 사용하기 비교 연산자 설명 비교 연산자는 연산자를 기준으로 좌항과 우항의 피연산자를 비교하여 그 결과를 불린 값으로 반환한다. 주로 if문, for문과 같은 제어문의 조건식에서 사용한다. 자바스크립트에서 비교 연산자는 다음의 4가지가 있다. 비교 연산자 의미 예시 설명 == 동등 비교 x==y x와 y의 값이 같다 != 부동등 비교 x!=y x와 y의 값이 같다 === 일치 비교 x===y x와 y의 값, 타입이 같다 !== 불일치 비교 x!==y x와 y의 값, 타입이 다르다 동등 비교 연산자와 일치 비교 연산자가 모두 비교 연산자의 역할을 하지만, 비교하는 엄격성에서 차이가 있다. 동등 비교 연산자는 느슨한 비교를 하고, 일치 비교 연산자는 엄격한 비교를 수행한다. 동등 비교 연산자 "=..
[백준] 1406번 에디터 - JavaScript(NodeJS)
문제 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 첫 문제 풀이 문제에서 등장하는 커서를 어떻게 구현할 것인지가 핵심이었다. 처음에는 커서의 위치 값 + Array.splice 함수 를 사용해보고자 했다. let fs = require("fs"); let input = fs.readFileSync("/dev/stdin").toString().split("\n"); let str = input[0].split(""); let len = input[1]; let cursor = str.length; for (l..
[백준] 9093번 단어 뒤집기 - JavaScript(NodeJS)
문제 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 입력 받기 입력을 받는 대한 방법은, "백준 자바스크립트 입력" 키워드로 검색하거나, [백준] 10828번 스택 - 자바스크립트 / NodeJS 문제 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. gobae.tistory.com 에 간단하게 정리해놨다. 문제 풀이 let fs = ..