Algorithm
[JS][백준]2798_블랙잭
문제 번호 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 알고리즘 분류 브루트포스 문제 풀이 주어진 모든 경우를 다 탐색해보면된다. 문제를 처음 풀었을때는 C++를 이용하여 3중 for문을 사용하였었다. 그러나 문제를 풀어볼수록 for문을 여러번 사용하는 방법은 금방 한계를 맞이했던 기억이 있어서 재귀를 사용하여 문제를 풀어보기로했다. cards 배열에 문제에서 주어진 N장의 카드들을 입력받고, picked란 배열을 사용하여서 해당 카드들이 선택되었는지 아닌지 알 수 있도록 ..
[JS][백준]2941_크로아티아 알파벳
문제 번호 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 알고리즘 분류 구현, 문자열 문제 풀이 오래전에 C++를 사용해서 풀었을때는 단순하게 조건식을 여러개 사용해서 풀이하였다. 좀 더 좋은 방법이 없을까 고민하다가 다음의 블로그에서 정규식을 사용하는것을 발견하였다. 백준 2941번: 크로아티아 알바펫(Croatia Alphabet) Node.js(JavaScript) Code 😢 단순 조건문 처리로는 풀기 싫어서, 어렵게 풀려다가 생각하는 시간이 조금 걸렸다. 그리고..
[JS][백준]2908_상수
문제 번호 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 알고리즘 분류 구현 문제 풀이 문제에서 주어지는 두개의 숫자를 string 형식으로 입력받아서 뒤집은다음 다시 숫자형식으로 바꾸어서 비교했다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('line', function (line) { input.pus..
[JS][백준]1152_단어의 개수
문제 번호 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 알고리즘 분류 구현, 문자열 문제 풀이 C++보다 JS가 편했던 유일한 문제이다.(아직까지는) 주어지는 입력을 line 단위로 입력받은 후 split 함수를 사용하여 공백단위로 나눠준다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('..
[JS][백준]1157_단어 공부
문제 번호 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 알고리즘 분류 구현, 문자열 문제 풀이 각 알파벳의 개수를 새어줄 alpha라는 배열을 생성한다. 각 대문자 소문자 알파벳의 아스키 코드를 이용하여 대문자일때, 소문자 일때로 나누어서 개수를 구한다. // A = 65 Z = 90 a = 97 z = 122 for (let i = 0; i < S.length; i++) { // 대문자일 경우. if (65
[JS][백준]2675_문자열 반복
문제 번호 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 알고리즘 분류 구현, 문자열 문제 풀이 문제에서 요구하는대로 구현만 하면 되는 간단한 문제이다. const readline = require('readline'); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('line', function (line) { input.push(line); }); r..
[JS][백준]10809_알파벳 찾기
문제 번호 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 알고리즘 분류 구현, 문자열 문제 풀이 아스키 코드를 문제풀이에 사용하였다. 문제에서 소문자만 주어진다 하였다. 그래서 문제에서 주어진 단어 S를 스트링으로 입력받았다. 그리고 스트링을 탐색하며 단어의 각 자리의 알파벳의 아스키코드에서 'a'의 아스키 코드를 뺀 값을 사용하였다.(97) for (let i = 0; i < S.length; i++) { if (answer[S.charCodeAt(i) - Number(97)] === -1) a..
[JS][백준]1065_한수
문제 번호 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 알고리즘 분류 브루트포스 문제 풀이 1이상, N보다 작거나 같은 한수의 개수를 모두 구하는 문제이다. 한 자리 수는 모두 한수 이다. // 한자리 수 는 '한수'이다. if (num.length === 0) answer++; 이후에는 등차가 달라진다면 한수가 아니라고 판단하였다. else { let difference = Number(num[0]) - Number(num[1]); for (let j = 0; j < num.length - 1; j++) {..