분류 전체보기
-
[백준 7562] 나이트의 이동 - bfs, 너비탐색 알고리즘, javascript, node.js알고리즘/코딩 테스트 2023. 2. 17. 11:46
문제 : https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 알고리즘 : 1. 이 문제는 전형적인 bfs 문제이다. 2. 출발지부터 하나씩 나이트를 이동시켜 최소 횟수를 출력시키면 된다. 3. 횟수를 셀때는 visit[ny][nx] = visit[y][x] + 1 로 설정해서 이동횟수를 설정해야 한다. 문제 풀이 : 1. input 에서 각각의 테스트 별로 n, 현재 위치, 목표 위치를 저장한다. for (let i=0;iArray.from({len..
-
[백준 2606] 바이러스 - dfs , javascript알고리즘/코딩 테스트 2023. 2. 15. 19:45
문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 알고리즘 0. 문제 해석 : 첫 번째 컴퓨터와 연결되어 있는 컴퓨터를 모두 찾는 문제이다 1. set 이용 : 중복되는 컴퓨터가 있을 수 있으니 set을 이용한다. 2. dfs 함수 : 반복되는 동작을 수행한다. 문제 풀이 1. set과 stack에 초기 값을 넣어주고 dfs 함수를 부른다. const set = new Set() let stack = [1] while(stack.length){ ..
-
[백준 14503] 로봇 청소기 - 구현, node.js,javascript알고리즘/코딩 테스트 2023. 2. 14. 18:18
문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 방은 NXM 크기의 직사각형으로 나타낼 수 있으며, 1×1$1 \times 1$ 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이다..
-
[백준 2444] 별 찍기 7 - node.js, javascript, 2442,2443알고리즘/코딩 테스트 2023. 2. 14. 10:07
문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 2442와 2443의 결합이다. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 5 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. * *** ***** ******* ********* ******* ***** *** * 완성 코드 const input = require('fs').readFileSync('/dev/stdin').toString().trim() *1 const answer = [] //2442 for(let i=1;i0;i--){..
-
[백준 10986] 나머지 합 - javascript,node.js,구간합,누적합알고리즘/코딩 테스트 2023. 2. 13. 14:59
문제링크 : https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 알고리즘 : 1. n개의 수를 누적합을 저장한다. 2. 아래 구간합의 나머지 수학 공식을 알아야 한다. - 즉 총합의 나머지가 0과 같아야 한다 했으니 결국 좌변의 합에 % m을 한 것과 우번의 합에 % m을 한것이 같아야 한다. 3. 조합을 이용한다. 즉 다른 n개 중 순서 상관없이 r개를 뽑는다. n!/(n-r)!r! 즉 하나의 식으..
-
[백준 16139] 인간-컴퓨터 상호작용 - 누적합, javascript,node.js알고리즘/코딩 테스트 2023. 2. 13. 13:42
문제: https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 알고리즘 : 1. 특정 알파벳 마다 누적합의 개수를 저장하기 위해 map을 이용한다. - map을 사용하지 않고 일일이 누적합을 구할 시 50점을 받게 된다. 2. 누적합의 개수를 구할 때는 map.get을 이용한다. 전체코드 const filePath = require('path').join(__dirname, '/test.txt'); c..
-
[백준] node.js 즉 javascript로 풀기위한 세팅알고리즘/코딩 테스트 2023. 2. 13. 12:37
1. input값 읽어오기 const input = require('fs').readFileSync('/dev/stdin').toStirng().trim().split('\n') 2. 문제에서 주어진 변수 저장하기 const [n,m] = input[0].split(' ').map(Number) 주로 첫 번째 줄에 n개 등등 숫자를 주어지므로 map(Number)를 사용하여 숫자로 저장한다. 참고로 map(v=>v+)보다 속도가 빠르다. 3. 출력값 저장하기 const answer = [] (출력값 배열에 저장) console.log(answer.join('\n')) 매번 출력 가능할 때 console.log를 찍는 것보다 하나의 배열에 값을 저장하고 줄바꿈으로 join하는 것이 시간 효율성이 좋다. 필..
-
[코딩테스트] 프로그래머스 javascript 2단계 - 영어 끝말잇기알고리즘/코딩 테스트 2023. 2. 10. 16:08
영어 끝말잇기 - 끝말잇기 규칙 3가지를 확인하는 문제이다. - 행과 열을 계산하는 규칙을 알아야 한다. 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 ..