아카이빙/BOJ 30

백준 3190번 - 뱀

백준 3190번 - 뱀 https://www.acmicpc.net/problem/3190 문제 Snake류 게임 시뮬레이션 뱀은 좌회전, 우회전 가능 뱀이 이동할 위치에 사과가 있으면 뱀의 길이가 늘어남 뱀이 벽에 부딪히거나 자신의 몸에 부딪히면 게임 종료 입력 보드의 크기 N (2 ≤ N ≤ 100) 사과의 개수 K (0 ≤ K ≤ 100) K개의 줄에는 사과의 위치 (행,열) 뱀의 방향 변환 횟수 L (1 ≤ L ≤ 100) 뱀의 방향 변환 정보 (X초가 끝난 뒤에 왼쪽(C가 'L') 또는 오른쪽(C가 'D')로 90도 방향을 회전) X는 10,000 이하의 양의 정수이며, 방향 전환 정보는 X가 증가하는 순 출력 첫째 줄에 게임이 몇 초에 끝나는지 출력 접근 1) 뱀이 이동할 위치를 계산한다 2) ..

아카이빙/BOJ 2019.06.18

백준 1644번 - 소수의 연속합

백준 1644번 - 소수의 연속합https://www.acmicpc.net/problem/1644 문제2 이상의 자연수가 주어졌을 때,이 자연수를 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 경우의 수예를 들어,41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 입력자연수 N (1 ≤ N ≤ 4,000,000) 출력경우의 수 접근에라토스테네스의 체를 활용하여 n 까지의 소수를 미리 구함투 포인터를 활용하여 포인터 2개 사이의 구간합을 구해가며 n가 같음을 확인구간합이 n보다 작으면 우측의 포인터를 증가구간합이 n보다 크거나 같으면 좌측의 포인터를 증가우측의 포인터가 끝에 도달하면 종료C++ Code#include #include #include #include using na..

아카이빙/BOJ 2018.10.21

백준 11778번 - 피보나치 수와 최대공약수

백준 11778번 - 피보나치 수와 최대공약수https://www.acmicpc.net/problem/11778 문제n 번째 피보나치 수와 m 번째 피보나치 수의 최대공약수를 구해보자. 입력n과 mn과 m은 1,000,000,000,000,000,000보다 작거나 같은 자연수 출력n 번째 피보나치 수와 m 번째 피보나치 수의 최대공약수를 1,000,000,007으로 나눈 나머지 접근최대공약수는 유클리드 호제법으로 구한다.GCD(a, b) = GCD(b, a % b)피보나치 수는 수가 매우 크기 때문에 DP로 구하면 시간초과행렬 곱셈을 활용하여 O(log N)의 시간복잡도로 피보나치 수를 구해야한다.C++ Code#include #include #include #include using namespace ..

아카이빙/BOJ 2018.10.21

백준 2143번 - 두 배열의 합

백준 2143번 - 두 배열의 합https://www.acmicpc.net/problem/2143 문제배열 A와 B가 있다.부배열은 배열의 부분 배열이다.A = {1, 3, 1, 2}, B = {1, 3, 2} 인경우, A와 B의 부배열 합이 T인 경우의 수를 모두 찾아라. 입력첫째 줄 : T(-1,000,000,000 ≤ T ≤ 1,000,000,000) 다음 줄 : n(1 ≤ n ≤ 1,000) A[1] 부터 A[n]까지 입력다음 줄 : m(1 ≤ n ≤ 1,000) B[1] 부터 B[n]까지 입력 출력경우의 수를 출력없을 경우 0을 출력 접근A로 만들 수 있는 부배열의 합을 미리 다 구한다.B로 만들 수 있는 부배열의 합을 미리 다 구한다.B를 정렬 (바이너리 서치를 위함)A의 원소를 하나씩 탐색하..

아카이빙/BOJ 2018.10.21

백준 15789번 - CTP 왕국은 한솔 왕국을 이길 수 있을까?

백준 15789번 - CTP 왕국은 한솔 왕국을 이길 수 있을까?https://www.acmicpc.net/problem/15789 문제링크 참조 입력입력의 첫째 줄에 왕국의 수 N(3 ≤ N ≤ 100,000)과 동맹 관계의 수 M(1 ≤ M ≤ 200,000)이 주어진다. 이 후 M개의 줄에 X,Y가 주어진다. 이는 X 왕국과 Y 왕국이 동맹이라는 뜻이다.입력의 마지막 줄에 CTP 왕국의 번호 C와 한솔 왕국의 번호 H와 추가 동맹의 기회 K(0 ≤ K ≤ 100)가 공백으로 구분되어 주어진다. 주어지는 입력에서 CTP 왕국과 한솔 왕국은 절대로 동맹이 되지 않게 주어진다. 출력CTP 왕국의 힘의 최대값을 출력 접근Disjoint-set과 Max heap을 활용 C++ Code#include #inc..

아카이빙/BOJ 2018.06.04

백준 14728번 - 벼락치기

백준 14728번 - 벼락치기https://www.acmicpc.net/problem/14728 문제ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다.다행히도 친절하신 교수님께서 아래와 같은 힌트를 시험 전에 공지해 주셨다. 내용은 아래와 같다.여러 단원을 융합한 문제는 출제하지 않는다.한 단원에 한 문제를 출제한다. 단, 그 단원에 모든 내용을 알고 있어야 풀 수 있는 문제를 낼 것이다.이런 두가지 힌트와 함께 각 단원 별 배점을 적어 놓으셨다. 어떤 단원의 문제를 맞추기 위해서는 그 단원의 예상 공부 시간만큼, 혹은 그보다 더 많이 공부하면 맞출 수 있..

아카이빙/BOJ 2017.09.26

백준 14501번 - 퇴사

백준 14501번 - 퇴사https://www.acmicpc.net/problem/14501 문제상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다.각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다.N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1d 2d 3d 4d 5d 6d 7d Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 2001일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은..

아카이빙/BOJ 2017.09.06

백준 11657번 - 타임머신

백준 11657번 - 타임머신https://www.acmicpc.net/problem/11657 문제N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다.각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다.시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다.1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오. 입력첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다.둘째 줄부터 M개의 줄에는 버스 노선의 정보 A,..

아카이빙/BOJ 2017.09.06

백준 2188번 - 축사 배정

백준 2188번 - 축사 배정https://www.acmicpc.net/problem/2188 문제농부 John씨는 그의 소 축사를 갓 완성하였다.축사 환경을 쾌적하게 유지하기 위해서, John씨는 축사를 N개의 칸으로 구분하여 두고, 한 칸에는 한 마리의 소만을 들어가도록 하였다.첫 주에는 소들을 임의적으로 칸에 배정하여 축사를 운영하였으나, 곧 문제가 발생하게 되었다. 자신들이 희망하는 몇 개의 축사 외에는 들어가기를 거부하는 것이다.농부 John씨를 도와 최대한 많은 수의 소가 축사에 들어갈 수 있도록 하는 프로그램을 작성하시오.축사의 번호는 1부터 M까지 매겨져 있다고 한다. 입력첫째 줄에 소의 마릿수 N과 축사의 개수 M이 주어진다. (1

아카이빙/BOJ 2017.09.06

백준 9461번 - 파도반 수열

백준 9461번 - 파도반 수열https://www.acmicpc.net/problem/9461 문제오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다.첫 삼각형은 정삼각형으로 변의 길이는 1이다.그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다.나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다.파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다.P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다.N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다.각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100) 출력각 테..

아카이빙/BOJ 2017.09.01