🐸 Problem Solving

🔗 문제 링크 : https://www.acmicpc.net/problem/1406  문제한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L : 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨)D : 커서를 오른쪽으로 한 칸 옮김 (커서가..
🔗 문제 링크 : https://www.acmicpc.net/problem/1806  문제10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.     입출력 예시입력첫째 줄에 N (10 ≤ N   출력첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다.       풀이 해당 문제는 투포인터를 이용해 해결하였다.현재 부분 합이 S보다 작으면 end를 1 증가 시킨다.현재 부분 합이 S보다 크거나 같으면 수열의 길이를 비교 및 갱신하고, start를 1 증가시킨다.위 과정을 반복한다.#include #in..
⏱ 시간 초과 테스트 14번부터 시간복잡도가 급격하게 증가한다.DP를 이용해서 데이터 비교 및 탐색 시간을 줄이는 방법으로 해결하였다. 문제정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다. 정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.      입출력 예시     풀이 이 풀이는 뒤에서부터 탐색하는게 핵심이다. 가장 큰 값은 answer에 기억해두면, 다음 턴에 뒷부분을 다시 탐색 할 필요가 없어진다.#include usin..
🔗 문제 링크 : 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로 사용하는 습관을 들이려고 한다.   문제차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추 근처에 서식하며 해충을 잡아먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 ..
[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.]  💣 단순한 탐색으로는 효율성 테스트를 통과하지 못한다!  시추관의 위치를 옮길 때마다 BFS 수행했던 첫 코드는 정확성 테스트는 통과하지만 효율성 테스트에서 처참히 실패하게 되는데.. 결국 BFS를 한 번만 수행하는 게 요점인 것 같다. 수행하는 동안 최대한 많은 (석유)데이터를 뽑아먹을 궁리를 해야 한다!   문제세로길이가 n 가로길이가 m인 격자 모양의 땅 속에서 석유가 발견되었습니다. 석유는 여러 덩어리로 나누어 묻혀있습니다. 당신이 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 가장 많은 석유를 뽑을 수 있는 시추관의 위치를 찾으려고 합니다. 시추관은 열 하나를 관통하는 형태여야 하며, 열과 열 사이에 시추관을 뚫을 수 없습..
Mojing_
'🐸 Problem Solving' 카테고리의 글 목록 (6 Page)