Processing math: 100%
[APS][C++] BOJ G4 1976번 여행 가자
APS/BOJ2025. 4. 18. 19:30[APS][C++] BOJ G4 1976번 여행 가자

https://www.acmicpc.net/problem/1976문제동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인지 알아보자. 물론 중간에 다른 도시를 경유해서 여행을 할 수도 있다. 예를 들어 도시가 5개 있고, A-B, B-C, A-D, B-D, E-A의 길이 있고, 동혁이의 여행 계획이 E C B C D 라면 E-A-B-C-B-C-B-D라는 여행경로를 통해 목적을 달성할 수 있다.도시들의 개수와 도시들 간의 연결 여부가 주어져 있고, 동혁이의 여행 계획에 속한 도시들이 순서대로 주어졌을 때 가능한지 여부를 판별하는 프로그램을 작성하시오. 같은 도시를 여..

[APS][C++] BOJ G2 16920번 확장 게임 (feat. 우선순위 큐)
APS/BOJ2025. 4. 6. 14:36[APS][C++] BOJ G2 16920번 확장 게임 (feat. 우선순위 큐)

https://www.acmicpc.net/problem/16920문제구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위에 있다. 한 칸 위에 성이 두 개 이상인 경우는 없다. 게임은 라운드로 이루어져 있고, 각 라운드마다 플레이어는 자기 턴이 돌아올 때마다 성을 확장해야 한다. 제일 먼저 플레이어 1이 확장을 하고, 그 다음 플레이어 2가 확장을 하고, 이런 식으로 라운드가 진행된다. 각 턴이 돌아왔을 때, 플레이어는 자신이 가지고 있는 성을 비어있는 칸으로 확장한다. 플레이어 i는 자신의 성이 있는 곳에서 Si칸 만큼 이동할 수 있는 모든 칸에 성을 동시에 만든..

[APS][C++] BOJ S3 9461번 파도반 수열 (feat. 다이나믹 프로그래밍, DP)
APS/BOJ2025. 3. 28. 19:09[APS][C++] BOJ S3 9461번 파도반 수열 (feat. 다이나믹 프로그래밍, DP)

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)출력각 테스트 케이스마다 P(N..

[APS][C++] BOJ S1 2529번 부등호
APS/BOJ2025. 3. 12. 02:32[APS][C++] BOJ S1 2529번 부등호

https://www.acmicpc.net/problem/2529문제두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들어 34561287..

[APS][C++] BOJ S5 11723번 집합 (feat. 입출력 시간 초과)
APS/BOJ2025. 2. 16. 23:15[APS][C++] BOJ S5 11723번 집합 (feat. 입출력 시간 초과)

https://www.acmicpc.net/problem/11723문제비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)all: S를 {1, 2, ..., 20} 으로 바꾼다.empty: S를 공집합으로 바꾼다.입력첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 ..

[APS][C++] BOJ S5 1676번 팩토리얼 0의 개수 (feat. 0의 개수의 비밀)
APS/BOJ2025. 2. 9. 20:58[APS][C++] BOJ S5 1676번 팩토리얼 0의 개수 (feat. 0의 개수의 비밀)

https://www.acmicpc.net/problem/1676문제N! 에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)출력첫째 줄에 구한 0의 개수를 출력한다.풀이N! 에서 0의 개수는 5의 지수(소인수로서 5가 총 몇번 곱해졌는지)를 확인하면 된다.연속된 0의 개수는 팩토리얼의 소인수 분해에서 10이 몇 번 곱해졌는지에 따라 변화함10은 2와 5가 각각 하나씩 모일 때마다 만들어지기 떄문에 소인수로서 5가 총 몇 개가 있느냐에 따라 결정됨 (2는 모든 짝수의 소인수이기 때문에  소인수로서 2는 5보다 무조건 많을 수 밖에 없음)아래 수식을 코드로 구현하면 해결이 가능함$$ \left\lf..

[APS][C++] BOJ B2 1152번 단어의 개수 (feat. getline)
APS/BOJ2025. 1. 30. 23:14[APS][C++] BOJ B2 1152번 단어의 개수 (feat. getline)

https://www.acmicpc.net/problem/1152문제영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.입력첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다.이 문자열의 길이는 1,000,000을 넘지 않는다.단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.또한 문자열은 공백으로 시작하거나 끝날 수 있다.출력첫째 줄에 단어의 개수를 출력한다.풀이문자열을 입력받고, 문자열에 포함된 단어의 개수를 세어 출력하면 된다.공백이 포함된 문자열을 받기 위해서 cin 대신 getline 함수 사용공백 한 개만 존재하는 문자열에 ..

[APS][C++] BOJ B5 10951번 A+B - 4 (feat. EOF)
APS/BOJ2025. 1. 28. 15:27[APS][C++] BOJ B5 10951번 A+B - 4 (feat. EOF)

https://www.acmicpc.net/problem/10951문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.입력입력은 여러 개의 테스트 케이스로 이루어져 있다.각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 출력각 테스트 케이스마다 A+B를 출력한다.풀이정수 a와 b를 입력 받고, 두 정수를 더한 수를 출력해주면 되는 간단한 문제이다.단, 테스트 케이스의 개수와 종료 조건이 정해지지 않았다는 점을 주의! >> EOF(End of File)를 사용하라는 의미콘솔 창에서 EOF는 수동으로 넣어줘야 하는데, 윈도우 기준 ctrl+z코드#include using namespace std;int main() { while (true) { ..

[APS][C++] BOJ B5 2741번 N 찍기 (feat. 시간 초과)
APS/BOJ2025. 1. 28. 02:18[APS][C++] BOJ B5 2741번 N 찍기 (feat. 시간 초과)

https://www.acmicpc.net/problem/2741문제자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.입력첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄부터 N번째 줄 까지 차례대로 출력한다.풀이자연수 N을 입력받고, 1부터 N까지 개행을 하며 차례대로 출력하면 해결되는 매우 간단한 문제이다.변수 n을 선언한 후, cin을 이용하여 입력 받음반복문을 통해 반복하며 cout을 이용하여 1 ~ N 까지 출력 (개행 포함)코드#include using namespace std;int main() { int n; cin >> n; for (int i = 1; i 결과오답 원인endl을 이용한 개행 >> 시간 초과 발생 >> e..

image