건전한 건전지
반응형
[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/CPP] 고양이 카페 - 28353번 / C++ 풀이
Algorithm 2023. 10. 30. 22:49

https://www.acmicpc.net/problem/28353 28353번: 고양이 카페 첫째 줄에 정수 $N$과 $K$가 공백으로 구분되어 주어진다. $(1 \leq N \leq 5\,000;$ $1 \leq K \leq 10^9)$ 둘째 줄에는 각 고양이의 무게를 의미하는 $N$개의 정수 $w_1, w_2, \dotsm, w_N$이 공백으로 구분되어 주어 www.acmicpc.net N마리의 고양이 중 2마리 몸무게의 합이 K 이하가 되는 최대 경우의 수 투포인터로 풀었다. 1. 배열 정렬 2. if(최솟값 + 최댓값 true : cnt 1개 증가, 최솟값 포인터 +1, 최댓값 포인터 -1 (중복이 없어야함) -> false : 최댓값 포인터 -1 . 왜냐하면 가장 가벼운 고양이 + 가장 무거운..

article thumbnail
[Programmers/Level2] 프로그래머스 - 짝지어 제거하기 [C++풀이]
Algorithm 2023. 9. 16. 02:49

https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말정말 오랜만에 푸는 알고리즘 문제... 연속으로 같은 문자가 나오면 제거해주고 앞 뒤를 이어 붙여서 다시 체크한다. ABBAAA 면 true, ABBBAA 면 false가 나온다. 문자열이 홀수개라면 구성과 관계없이 false. 보자마자 Stack을 이용해야 한다는 것을 알았지만 너무 오랜만이라 구현이 오래걸렸다 ㅜ 풀이 #include using namespace std; int soluti..

article thumbnail
[BOJ/CPP] 부분합 - 1806번 / C++ 풀이
Algorithm 2023. 5. 26. 17:19

https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 누적합 문제이다. 풀이 : 입력 받은 숫자를 하나씩 더하고 S보다 큰 부분이 나오면 제일 왼쪽의 배열을 뺴주면서 최소 길이를 갱신해야한다. 예제로 설명을... N = 6, S = 5 입력 받을 배열 { 1, 3, 1, 2, 3, 1 } 1을 입력받고 Sum에 1을 더해준다. 아직 S를 넘지 못하였다. 다음 숫자을 입력받아 Sum에 더해주자 S = 5, Sum = 4로 아직 S보다 작..

article thumbnail
[BOJ/CPP] 빈도 정렬 - 2910번 / C++풀이
Algorithm 2023. 5. 12. 00:18

https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 정렬 문제이다. 숫자 N개를 입력받아서 정렬을 하는 알고리즘을 작성 정렬 기준 1. 숫자가 많이 나오는 순서 2. 개수가 같다면 먼저 나온 것이 앞에 있어야 함 해당 숫자가 몇번째에 등장하였는지 알 수 있는 값을 넣어준 후 그것을 기준으로 정렬 후 출력한다. map과 pair를 조합하여 풀었다. 해결 방법 1. 숫자를 입력 받아 map 안에 없는 숫자라면 새로 넣어준다. ex) 3이 5번째에 처음 들어왔다고 예를 들면 [3, 1, 5] 1..

[BOJ/CPP] 동일한 단어 그룹화하기 - 16499번 [C++풀이]
Algorithm 2023. 5. 3. 15:22

https://www.acmicpc.net/problem/16499 16499번: 동일한 단어 그룹화하기 첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. www.acmicpc.net 같은 문자들로 이루어진 단어끼리 짝을 지어 몇개의 그룹으로 나뉘는지 알아내는 문제 ex) dog == god == gdo == dgo == odg ⋯ -> 같은 그룹 문자열을 입력받아 사전순으로 정렬한 후 set에 넣어서 같은 문자열들은 하나의 그룹으로 취급해준다. (abcd, dbca, dcab -> sort를 사용하면 모두 abcd로 정렬됨) 전체 코드 #include using..

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)이 되어야 이용 횟수..