Algorithm/BaeKJoon
[JS][백준]14502_연구소
문제 번호 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 알고리즘 분류 그래프 이론, 그래프 탐색, 브루트포스, 너비 우선 탐색 문제 풀이 브루트포스와 그래프 탐색을 모두 이용해야 하는 문제이다. 우선 브루트포스 알고리즘을 사용하여 주어지는 지도에 벽3개를 세울 수 있는 경우를 모두 다 조사해야한다. function solution(y, x) { if (cnt === 0) { return count(); } for (let i = y; i
[JS][백준]21608_상어 초등학교
문제 번호 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 알고리즘 분류 구현 문제 풀이 문제에서 시키는대로 구현해서 자리를 배치하고 완료된 배치를 갖고 학생들의 만족도를 구하면된다. 특별한 알고리즘은 없다. 구현문제를 풀때 배열에 객체를 넣어서 사용하는 경우가 많은것 같다. 구현문제는 코드의 길이가 다른 문제들에 비해서 긴 경우가 많음으로 차분하게 단계별로 테스트하면서 푸는것이 좋은것 같다. 학생 한명씩 1,2,3 단계를 거치면서 자리를 배정하는 방법으로 문제를 해결했다. map 배열을 생성하여 각..
[JS][백준]20055_컨베이어 벨트 위의 로봇
문제 번호 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 알고리즘 분류 구현, 시뮬레이션 문제 풀이 알고리즘이 어렵진 않다. 차분하게 문제를 읽고 문제가 요구하는대로 한 단계씩 구현하면 된다. 그나마 생각해봐야 할것은 벨트의 순환이다. 1차원 배열을 1번 인덱스부터 사용하였다. 벨트가 움직이는것은 for문을 사용하여 i=N 일때부터 i=1 일때 까지 진행하였다. belt[i] = belt[i-1]. 단 i 가 2N 일 때는 2N번째 벨트에 있는 정보를 temp 라는 변수에 옮겨두었다. 왜..
[JS][백준]11650_좌표 정렬하기
문제 번호 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 알고리즘 분류 정렬 문제 풀이 C++ 에서 처럼 구조체를 사용하여 좌표들을 입력받은 후 정렬을 해주려고했다. 하지만 JS에는 구조체가 존재하지 않는다. function과 배열을 사용하여 C++에서의 구조체 배열처럼 사용할 순 있지만 그렇게 할 경우 시간초과에 걸린다. 그래서 filter 매서드를 사용하여 입력을 받았다. const fs = require('fs'); const input = fs.re..
[JS][백준]2108_통계학
문제 번호 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 알고리즘 분류 구현, 정렬 문제 풀이 특별한 알고리즘은 없는 문제이다. 문제에서 주어진 내용대로 구현해서 출력만 하면된다. 산술평균 // 산술 평균 let sum = 0; for (let i = 0; i < input.length; i++) { sum += Number(input[i]); } arithmeticMean = Math.round(sum / input.length); console.log(arithmeticMean); 중앙값 // 중앙값. mid = Nu..
[JS][백준]1260_DFS와 BFS
문제 번호 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 알고리즘 분류 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색 문제 풀이 기본적인 DFS와 BFS를 구현하면 되는문제이다. DFS구현에는 STACK을 사용하는것이 편리한데 C++과는 다르게 JS에는 stack이라는 자료구조를 사용할 수 있는 라이브러리가 따로 존재하지 않는다. 또한 BFS는 Queue를 사용하여 구현하는것이 편리한데 Queue를 사용할 수 있는 라이브러리또한 존재하지 않는다. 하지만 ..
[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..