Algorithm
[JS][백준]17406_배열 돌리기4
문제 번호 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 알고리즘 분류 구현, 브루트포스 문제 풀이 브루트포스를 이용하여 문제에서 주어진 연산들을 수행할 모든 순서를 정한다. 나는 이 순서들을 operationOrder 라는 배열에 넣어주기로 하였다. // 회전 연산의 경우의 수. let operationOrder = []; let end = K; function BTS() { if (end === 0) { //console.log(operationOrder); return ro..
[JS][백준]12871_무한 문자열
문제 번호 12871번: 무한 문자열 첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 알고리즘 분류 수학, 구현, 문자열 문제 풀이 검색해보면 LCM을 이용하는 방법들이 주로 나온다. 그래서 나는 다른분께 질문해서 들은 내용으로 문제를 풀어보려고한다. 최대공배수를 구한다음 주어진 문자열들을 최대공배수 만큼 자른다. 그 후 잘린 문자열들을 비교해서 모두 같은내용이라면 '1' 이다. const fs = require('fs'); const input = fs.readFileSync('무한 문자열/input.txt').toString().trim().split('\n'); let s = in..
Sort
1. bubble sort function bubbleSort (input) { const len = input.length; let tmp = null; for (let i = 0; i input[j + 1]) { // Swap tmp = input[j]; input[j] = input[j + 1]; input[j + 1] = tmp; tmp = null; } } } return input; } 2. selection sort function selectionSort (input) { const len = input.length; let tmp = null; for (let i = 0; i < ..
[JS][백준]3190_뱀
문제 번호 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 알고리즘 분류 구현, 자료구조, 시뮬레이션, 덱, 큐 문제 풀이 구현문제다. 그래서 알고리즘은 어렵지 않다. 다 풀고나서 백준에 있는 알고리즘 분류를 보니 덱과 큐 가 있었다. 아마도 뱀의 이동경로를 기록하기 위해서 사용하는 용도같다. 나는 문제풀때는 이 생각을 못해서 배열에 이동경로를 넣고 shift 하면서 뱀의 꼬리를 움직였다.(선입 선출 구조이므로 queue를 생각하고 풀었으면 생각의 정리가 더 편했을것 같다.) JS 스텍, 큐 큐, 스택, 트리 | J..
[JS][백준]14503_로봇 청소기
문제 번호 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 알고리즘 분류 구현, 시뮬레이션 문제 풀이 보통 시뮬레이션/구현 문제들은 문제에서 주어진 순서대로 작성하면 쉽게 문제가 해결되었다. 그런데 이번 문제는 2단계의 b를 가장 마지막에 확인하였다. 문제에서 주어진 순서대로 작성하였더니 2단계의 b번을 확인하는 과정에서 아래의 c와 d를 확인하지않고 a와 b만 무한 반복하는 현상이 벌어졌기 때문이다. 물론 a b c d 순서대로 확인하는 방법도 있을거라 생각하지만 나는 a c d b 의 순서로 확인하였다. ..
[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 라는 변수에 옮겨두었다. 왜..