건전한 건전지
반응형
[BOJ/CPP] 아카라카 - 23304번 / C++ 풀이
Algorithm 2023. 12. 8. 15:26

https://www.acmicpc.net/problem/23304 23304번: 아카라카 주어진 문자열 $S$가 아카라카 팰린드롬이라면, AKARAKA를 출력한다. 만약 그렇지 않다면, IPSELENTI를 출력한다. www.acmicpc.net 팰린드롬 판정 문제이다. 재귀를 사용하여 문자열을 계속 반으로 나누고 길이가 1이 될 때까지 혹은 팰린드롬이 아닐 때까지 판정하면 된다. 일반적인 팰린드롬이랑은 다르게 반으로 나눈 문자열도 팰린드롬인지 확인해야한다. 짝수일 경우 aaabbaaa -> 처음 aaab baaa -> 나누어짐 aa ab ba aa -> 또 나누어짐 a a a b b a a a -> 또 나누어짐 홀수일 경우 acabaca -> 처음 aca aca -> b는 빼고 나누어짐 a a a a-..

article thumbnail
[BOJ/C++] 자유 이용권 - 25635번 / CPP 풀이
Algorithm 2023. 4. 9. 14:02

https://www.acmicpc.net/problem/25635 25635번: 자유 이용권 자유 이용권은 놀이공원의 모든 놀이기구를 횟수의 제한 없이 마음껏 이용할 수 있는 이용권이다. 준원이는 ANA 놀이공원의 자유 이용권을 구매했고, 최대한 많이 놀이기구를 이용할 생각이다. www.acmicpc.net N개의 놀이기구가 있다. 각각의 놀이기구에는 이용 가능 횟수가 적혀있고 자유이용권을 가지고 최대한 많은 놀이기구를 이용하고 싶다. 단, 각각의 놀이기구는 연속으로 이용할 수 없다. N개의 놀이기구를 모두 이용하는 조건은 (이용 가능 횟수가 가장 많은 놀이기구 -1)이 나머지 놀이기구의 이용횟수들 보다 작거나 같아야 한다. 즉, (나머지 횟수) >= (제일 횟수가 많은 기구 -1)이 되어야 이용 횟수..

[백준/CPP] 근손실 - 18429번 / CPP 풀이
Algorithm 2023. 4. 1. 19:29

https://www.acmicpc.net/problem/18429 18429번: 근손실 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 www.acmicpc.net 백준 백트래킹의 대표적인 문제인 "N과 M"이랑 비슷한 문제이다. 문제를 요약하자면 N일 동안 매일 다른 키트를 사용하여 운동하는데 하루에 근육이 K만큼 빠진다고 한다. 매일 매일 다른 키트를 사용하여 N일 동안 3대 500을 유지하는 문제이다. 단 하루라도 500 이하로 떨어지면 안되므로 Ni - K > 500 인 순열을 찾는 문제이다. For 문을 0 ~ N까지 돌리면서 만약 그 날..

article thumbnail
[BOJ/C++] 욱제는 도박쟁이야!! - 14655번 / CPP풀이
Algorithm 2023. 3. 2. 02:34

https://www.acmicpc.net/problem/14655 14655번: 욱제는 도박쟁이야!! 첫째 줄에 동전의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 둘째 줄에 욱제의 첫 번째 라운드의 N개 동전의 배열이 주어진다. 셋째 줄에 욱제의 두 번째 라운드의 N개 동전의 배열이 주어진다. 동전에 적 www.acmicpc.net 그리디 알고리즘 문제이다. 문제에서 이해가 잘 안되는 문장이 있는데 항상 연속한 3개의 동전만 뒤집는다고 해놓고 저게 뭔말인지........ 간단하게 말하면 3개의 인덱스를 동시에 뒤집는 것이 아니라 배열 맨 처음 or 마지막 2개씩 혹은 1개씩 뒤집는 행위가 가능하다는 것이다. 풀이는 두가지가 있는데 먼저 첫번째 풀이 첫 배열의 모든 원소는 +로 만들고, 두 번째 ..

article thumbnail
[백준/C++] 창고 이전 - 2134번 / CPP풀이
Algorithm 2023. 2. 27. 17:53

https://www.acmicpc.net/problem/2134 2134번: 창고 이전 첫째 줄에 세 정수 n, m, k가 주어진다. 다음 줄에는 n개의 정수로 기존 창고의 각 층에 보관되어 있는 물품의 개수가 1층부터 n층의 순서로 한 줄에 하나씩 주어진다. 다음 m개의 줄에는 창고의 각 www.acmicpc.net - 생각한 내용 - 물건은 1회 이동당 1개씩만 챙겨서 새로운 창고로 이동함. 높은 층에 있는 물건을 옮길수록 Total Cost가 늘어남 -> 최대한 많은 물건을 옮기는 것이 목적 -> 새로운 창고의 1층부터 채우고, 기존 창고의 1층 물건부터 옮기면 최소 Cost로 작업 가능 인부의 수는 생각할 필요가 없음. -> 인부의 수는 결과에 영향을 주지 않음 (빨리 끝내거나 효율적으로 하는게..

article thumbnail
[백준/C++] 발머의 피크 이론 - 27496번
Algorithm 2023. 2. 22. 14:30

https://www.acmicpc.net/problem/27496 27496번: 발머의 피크 이론 각 시간에 따른 혈중 알코올 농도는 {0.045, 0.089, 0.133, 0.131, 0.127}이다. 따라서 지금으로부터 2시간 후와 3시간 후, 총 두 시간 동안 혈중 알코올 농도를 유지할 수 있다. www.acmicpc.net 슬라이딩 윈도우 + 누적합 문제이다. 소수점이 나와서 더 까다로웠던 문제 시간 N과 알코올의 지속시간 L을 입력받고 매 시간마다 섭취하는 알코올의 양인 Ai를 입력받아 0.129 l; vector vc; int cnt = 0; int nowA = 0; for (int i = 0; i > c; vc.push_back(c); nowA +..

article thumbnail
[백준/C++] 알파벳 블록 - 27497 / CPP 풀이
Algorithm 2023. 2. 22. 14:10

https://www.acmicpc.net/problem/27497 27497번: 알파벳 블록 첫째 줄에 버튼을 누른 횟수 $N$이 주어진다. $(1 \leq N \leq 1\,000\,000)$ 둘째 줄부터 $N$개의 줄에는 버튼을 누른 순서대로 누른 버튼에 대한 정보를 주며 아래와 같은 형식으로 주어진다. 1 c : 문자열 www.acmicpc.net 구현해야 하는 기능은 3개 1. 문자열 맨 뒤에 문자 추가 2. 문자열 맨 앞에 문자 추가 3. 가장 나중에 추가된 문자 제거. 단, 문자열이 비었을 때는 작동 없이 넘어감 1, 2는 deque를 이용해서 구현하면 되고 3번은 스택을 사용하여 구현하면 되는 문제이다. 문자열을 저장하고 삭제할 deque와 최근 문자가 무엇인지 기억할 Stack을 이용해서..