🔗 문제 링크 : https://www.acmicpc.net/problem/1806 문제10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입출력 예시입력첫째 줄에 N (10 ≤ N 출력첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 풀이 해당 문제는 투포인터를 이용해 해결하였다.현재 부분 합이 S보다 작으면 end를 1 증가 시킨다.현재 부분 합이 S보다 크거나 같으면 수열의 길이를 비교 및 갱신하고, start를 1 증가시킨다.위 과정을 반복한다.#include #in..
🐸 Problem Solving/BOJ
🔗 문제 링크 : https://www.acmicpc.net/problem/4179 ☁ J가 1개랬지, F가 1개라고는 안 했지요😭 다양한 테스트케이스에선 통과를 했지만, 채점만 하면 자꾸 틀렸다고 한다. 원인은... J와 F가 각각 하나만 주어질거라고 생각했던 것이다.문제에 "J는 입력에서 하나만 주어진다."라는 문장이 있는데, 이걸 보고 F가 여러 개일 경우도 생각해봤어야 했다.작성해 놓은 코드에서 수정이 많이 필요하진 않았지만, 일찍 깨닫지 못한 나에게.. 분노했다.🧨 문제지훈이는 미로에서 일을 한다. 지훈이를 미로에서 탈출하도록 도와주자! 미로에서의 지훈이의 위치와 불이 붙은 위치를 감안해서 지훈이가 불에 타기 전에 탈출할 수 있는지의 여부, 그리고 얼마나 빨리 탈출할 수 있는지..
🔗 문제 링크 : https://www.acmicpc.net/problem/1629 문제자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오. 입출력 예시입력첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. 출력첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다. 풀이 모듈러 연산의 성질을 잘 활용하지 않으면 overflow를 마주치는 문제이다.모든 연산에 모듈러 연산 처리를 해주며 진행하는게 중요하다.#include using namespace std;/* (10^11 % 12) = (10^5 * 10^..
🔗 문제 링크 : https://www.acmicpc.net/problem/1747 문제어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오. 입출력 예시입력첫째 줄에 N이 주어진다. 출력첫째 줄에 조건을 만족하는 수를 출력한다. 풀이 #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(0); int N; cin..
🔗 문제 링크 : https://www.acmicpc.net/problem/14503 ☁ 로봇 청소기 감시하기로봇 청소기의 작동 방식 그대로 코드로 구현하면서, 술술 풀리는 줄 알았지만.. 테스트 케이스 2번에서 문제가 터지고 11 x 10 사이즈의 맵에서의 디버깅을 시작하였다. 청소하는 경로를 추적하는 방법은 문제해결에 아주아주 큰 도움이 된다. 간절한 분에게 비교문서로서 도움 되길 바라며.. 이 본문의 마지막 부분에 테스트케이스 2번의 정상적인 청소 경로를 포함하였다. 참고로 테스트 케이스 2번의 결과는 모든 빈칸을 청소한 결과가 아니다.즉, 청소되지 않은 칸이 존재한다. 나의 망가진 로봇 청소기의 경로는 기가막혔다. 문제로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를..
🔗 문제 링크 : https://www.acmicpc.net/problem/1325 문제해커 김지민은 잘 알려진 어느 회사를 해킹하려고 한다. 이 회사는 N개의 컴퓨터로 이루어져 있다. 김지민은 귀찮기 때문에, 한 번의 해킹으로 여러 개의 컴퓨터를 해킹할 수 있는 컴퓨터를 해킹하려고 한다. 이 회사의 컴퓨터는 신뢰하는 관계와, 신뢰하지 않는 관계로 이루어져 있는데, A가 B를 신뢰하는 경우에는 B를 해킹하면, A도 해킹할 수 있다는 소리다. 이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하시오. 입출력 예시입력첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보..
🔗 문제 링크 : https://www.acmicpc.net/problem/1012 ☁ BFS에서 자주 사용하는, 방문 여부를 저장할 변수의 이름을 visited로 사용했었지만, 불리언(boolen) 변수임을 명확하게 하기 위해 접두사 is를 붙여서 isVisited로 사용하는 습관을 들이려고 한다. 문제차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추 근처에 서식하며 해충을 잡아먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 ..
🔗 문제 링크 : https://www.acmicpc.net/problem/1926 문제어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다. 입출력 예시입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한..
🔗 문제 링크 : https://www.acmicpc.net/problem/2798 문제카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 ..
🔗 문제 링크 : https://www.acmicpc.net/problem/1260 문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입출력 예시입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력첫째 줄에 DFS를 수행..