본문 바로가기

분류 전체보기233

1806 부분합 (자바스크립트) 문제10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.입력첫째 줄에 N (10 ≤ N 출력첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다.===문제 분석배열의 길이가 작았다면 이중 반복문을 통해 가장 짧은 길이를 출력하면 되겠지만, 이 문제의 경우 최대 길이가 10만이므로 이중 반복문을 돌린다면 시간 초과가 나올 것이다. 그래서 빅오 N의 방식으로 순회하는 걸 생각해봤는데 인덱스 0부터 합이 m이 나올때까지 인덱스를 늘려준다. 0~x까지의 합이 m 일때, 1부터 x까지의 합이 m이 또 나올 수 있다... 2025. 1. 17.
15683 감시 (자바스크립트) https://www.acmicpc.net/problem/15683문제 분석우선 네 방향의 dir 배열을 만들어준다.const dx = [0, 1, 0, -1];const dy = [1, 0, -1, 0];// 우,하,좌,상그 다음으로는 카메라의 넘버에 맞춰 바라볼 수 있는 방향을 담은 배열을 만들어준다.const camera = [ [], [[0], [1], [2], [3]], // 1번 [ [0, 2], [1, 3], // 2번 ], [ [0, 1], // 3번 [1, 2], [2, 3], [3, 0], ], [ [3, 0, 1], // 4번 [0, 1, 2],.. 2025. 1. 16.
17135 캐슬 디펜스 ( 자바스크립트 ) 문제캐슬 디펜스는 성을 향해 몰려오는 적을 잡는 턴 방식의 게임이다. 게임이 진행되는 곳은 크기가 N×M인 격자판으로 나타낼 수 있다. 격자판은 1×1 크기의 칸으로 나누어져 있고, 각 칸에 포함된 적의 수는 최대 하나이다. 격자판의 N번행의 바로 아래(N+1번 행)의 모든 칸에는 성이 있다.성을 적에게서 지키기 위해 궁수 3명을 배치하려고 한다. 궁수는 성이 있는 칸에 배치할 수 있고, 하나의 칸에는 최대 1명의 궁수만 있을 수 있다. 각각의 턴마다 궁수는 적 하나를 공격할 수 있고, 모든 궁수는 동시에 공격한다. 궁수가 공격하는 적은 거리가 D이하인 적 중에서 가장 가까운 적이고, 그러한 적이 여럿일 경우에는 가장 왼쪽에 있는 적을 공격한다. 같은 적이 여러 궁수에게 공격당할 수 있다. 공격받은 적은.. 2025. 1. 16.
17281 ⚾ (자바스크립트) 문제⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종료되고, 두 팀이 공격과 수비를 서로 바꾼다.두 팀은 경기가 시작하기 전까지 타순(타자가 타석에 서는 순서)을 정해야 하고, 경기 중에는 타순을 변경할 수 없다. 9번 타자까지 공을 쳤는데 3아웃이 발생하지 않은 상태면 이닝은 끝나지 않고, 1번 타자가 다시 타석에 선다. 타순은 이닝이 변경되어도 순서를 유지해야 한다. 예를 들어, 2이닝에 6번 타자가 마지막 타자였다면, 3이닝은 7번 타자부터 타석에 선다.공격은 투수가 던진 공을 타석에 있는 타자가 치는 것이다. 공격 팀의 선수가 1루, 2루, 3루를 거쳐서 .. 2025. 1. 14.
15686 치킨 배달 (자바스크립트) 문제크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다.이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다.임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다.예를 들어, 아래와 같은 지도를 갖.. 2025. 1. 14.
17088 등차수열 변환 문제크기가 N인 수열 A = [A1, A2, ..., AN]이 있을 때, 모든 1 ≤ i 수열 B = [B1, B2, ..., BN]을 등차수열로 변환하려고 한다. 각각의 수에는 연산을 최대 한 번 적용할 수 있다. 연산은 두 가지가 있는데, 1을 더하거나 1을 빼는 것이다. 수열 B를 등차수열로 변환하기 위해 필요한 연산 횟수의 최솟값을 구해보자.입력첫째 줄에 수열 B의 크기 N(1 ≤ N ≤ 105)이 주어진다. 둘째 줄에는 B1, B2, ..., BN(1 ≤ Bi ≤ 109)이 주어진다.출력수열 B를 등차수열로 변화시키기 위한 연산 횟수의 최솟값을 출력한다. 등차수열로 변환시킬 수 없다면 -1을 출력한다.=====문제 풀이숫자 배열에서 각 인덱스에 적힌 숫자를 -1 ,0 ,+1 계산이 가능하며 그 .. 2025. 1. 14.
16936 나3곱2 (자바스크립트) 문제나3곱2 게임은 정수 하나를 이용한다. 가장 먼저, 정수 x로 시작하고, 연산을 N-1번 적용한다. 적용할 수 있는 연산은 두 가지 있고, 아래와 같다.나3: x를 3으로 나눈다. x는 3으로 나누어 떨어져야 한다.곱2: x에 2를 곱한다.나3곱2 게임을 진행하면서, 만든 수를 모두 기록하면 수열 A를 만들 수 있다. 예를 들어, x = 9, N = 6이고, 적용한 연산이 곱2, 곱2, 나3, 곱2, 나3인 경우에 A = [9, 18, 36, 12, 24, 8] 이다.수열 A의 순서를 섞은 수열 B가 주어졌을 때, 수열 A를 구해보자.입력첫째 줄에 수열의 크기 N(2 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 수열 B가 주어진다. B에 포함된 원소는 1018 보다 작거나 같은 자연수이다.출력나3곱2.. 2025. 1. 14.
2580 스도쿠 (자바스크립트) https://www.acmicpc.net/problem/2580문제 분석입력으로 스도쿠가 주어졌을 때, 알맞은 숫자가 들어간 정답을 출력하는 문제이다.각 칸 별로 가능한 모든 숫자들을 넣어보는 브루트포스 문제이다.우선 빈칸(gr[i][j] 가 0)인 좌표들을 모두 구해서 배열에 넣어본다.let answer = 0; const coordinate = []; for (let i = 0; i 이 빈칸들을 하나하나 탐색해가면서 행,열,사각형(3*3)을 탐색해가면서 가능한 숫자들을 구해보고 가능한 숫자가 있다면 그 다음 좌표를 탐색하는 dfs 방식을 사용했다.const dfs = (coordiIdx, cnt) => { if (cnt === answer) { console.log(gr.. 2025. 1. 13.
16197 두 동전 문제N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, 두 동전의 위치는 다르다.버튼은 "왼쪽", "오른쪽", "위", "아래"와 같이 4가지가 있다. 버튼을 누르면 두 동전이 버튼에 쓰여 있는 방향으로 동시에 이동하게 된다.동전이 이동하려는 칸이 벽이면, 동전은 이동하지 않는다.동전이 이동하려는 방향에 칸이 없으면 동전은 보드 바깥으로 떨어진다.그 외의 경우에는 이동하려는 방향으로 한 칸 이동한다.이동하려는 칸에 동전이 있는 경우에도 한 칸 이동한다.두 동전 중 하나만 보드에서 떨어뜨리기 위해 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오.입력첫째.. 2025. 1. 13.