전체 글
[JS][백준]1436_영화감독 숌
문제 번호 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 알고리즘 분류 브루트포스 문제 풀이 i를 666부터 시작하여 1씩 무한히 증가시키면서 666이 포함되어 있는지 검사하였다. Javascript의 메서드중에 indexOf() 라는 메서드를 사용하였다. String.prototype.indexOf() - JavaScript | MDN indexOf() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다. developer.mo..
[JS][백준]1018_체스판 다시 칠하기
문제 번호 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 알고리즘 분류 브루트포스 문제 풀이 정상적으로 칠해진 8*8 크기의 체스판 2개를 미리 생성했다. 검은색부터 칠해진것 하나, 흰색부터 칠해진것 하나. let white = ['WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW'] let black = ['BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBW..
[JS][백준]7568_덩치
문제 번호 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 알고리즘 분류 구현, 브루트포스 문제 풀이 자신(i)의 덩치와 다른사람(j)의 덩치를 비교하여 다른사람의 덩치가 더 크다면 count 변수를 증가시켜주는 방식을 선택하였다. const fs = require('fs'); let input = fs.readFileSync('덩치_7568/input.txt').toString().split('\n'); const N = Number(input.shift()); let person = []; f..
[JS][백준]2231_분해합
문제 번호 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 알고리즘 분류 브루트포스 문제 풀이 const fs = require('fs'); const input = fs.readFileSync('2331_분해합/input.txt').toString().split('\n'); const N = Number(input.shift()); let answer = 0; answer = solution(); console.log(answer); function solution() { for..
[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]공부하며 얻은 짧은 팁s.
자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 자바스크립트 엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평가 과정을 거치면서 소스코드를 실행하기 위한 준비를 한다. 자바스크립트의 함수에서 return 값을 지정하지 않았을 경우 undefined 를 반환한다. Vscode에서 fs 모듈이 먹히지 않을경우 경로명에 있는 폴더나 파일의 이름을 확인하여 한글혹은 영문으로 시작하는 폴더 이름으로 바꾸어서 실행한뒤 다시 해보면 정상적으로 작동한다.(아직 이유모름). 값이 할당될때는 undefined가 저장되어있던 메모리 공간을 지우고 그 메모리 공간에 새로운 값을 할당하는게 아니라 새롱누 메모리 공간을 확보하고 그곳에 할당값을 지정한다. 배열의 앞에 사용 : unshift..
자료구조 구현
Stack const stack = []; stack.push('a'); stack.push('b'); stack[stack.length - 1 ] // top stack.pop(); Queue const queue = []; queue.push('a'); queue.push('b'); queue.shift(); queue.shift(); Linked List const Node = value => { return { value, next: null } } const list = { head: null, tail: null, add(value) { const newNode = Node(value) if (list.head) { const tailStore = list.tail list.tail = new..
[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 😢 단순 조건문 처리로는 풀기 싫어서, 어렵게 풀려다가 생각하는 시간이 조금 걸렸다. 그리고..