KwanIk Devlog
[ 백준 25496번 ] 장신구 명장 임스
Algorithm/문제풀이 2023. 4. 15. 16:25

1. 문제 25496번: 장신구 명장 임스 첫 번째 줄에 정수 $P$와 정수 $N$이 공백으로 구분되어 주어진다. ($1 \le P \le 200$, $1 \le N \le 1\,000$) 두 번째 줄에는 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($1 \le A_i \le 200$) www.acmicpc.net 2. 풀이 욕심쟁이 알고리즘(Greedy Algorithm)을 통해서 풀이할 수 있는 문제로, 남아 있는 피로도를 어떻게 하면 가장 효과적으로 사용할 수 있을 것인가를 해결하는 것이다. 장신구를 제작하는데 드는 피로도가 작은 것을 최대한 먼저 제작한다면, 다른 장신구를 제작할 수 있는 문제로 분할할 수 있다. 따라서 입력받은 피로도를 작은 순서로 정렬하여, 순..

[ 백준 1715번 ] 카드 정렬하기
Algorithm/문제풀이 2023. 3. 10. 16:35

1. 문제 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 2. 풀이 입력으로 제공된 카드들의 누적합을 최소로 만드는 경우의 수를 만들라는 문제다. 이는 Greedy로 접근이 가능한데 이유는 아래와 같다. a, b, c, d 총 네 개의 카드 묶음(a < b < c < d)이 있다고 가정해보자. 이 때, 먼저 만든 묶음은 또 다른 카드 묶음과 합쳐져야 하므로 한 번 더 더해져야 함을 의미한다. 즉, 더 큰 카드 묶음을 이용하여 새로운 묶음을 만들수록 큰 수가 중복해서 더해진다는 것을 의미한다. ..

[ 백준 2225번 ] 합분해
Algorithm/문제풀이 2023. 3. 6. 20:04

1. 문제 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 2. 풀이 2차원 DP형태의 문제라 직관적으로 해답을 떠올리기 다소 어려운 유형의 문제라고 할 수 있다. 따라서 점화식을 먼저 한 번 도출해보도록 하자. 숫자 N을 정수 K개의 조합으로 만들 수 있는 문제를 다시 재조합하면 아래와 같이 생각할 수도 있다. dp[N][K]는 N을 K개 조합으로 만드는 경우의 수를 의미하고, 예시로 N = 6이고 K = 4라고 가정해보자. (_ , _ , _ , L) 네 개의 숫자 조합에서 마지막 자리를 L(0 ≤ L ≤ 6) 로 결정한다면, L 값에 따라서 아래 표의 경우의 수가 만들어짐을 알 수 있다. L case 0 dp[6][3] 1 dp[..

article thumbnail
[ 백준 2642번 ] 전개도
Algorithm/문제풀이 2023. 2. 21. 14:48

1. 문제 2642번: 전개도 입력은 여섯 줄로 되어 있으며 각 줄에는 0에서 6까지의 정수들이 여섯 개 있고, 숫자 사이에는 빈칸이 하나씩 있다. 1에서 6까지의 숫자는 전개도의 면을 나타내고, 0은 전개도의 바깥 부분을 나 www.acmicpc.net 2. 풀이 문제에서 요구하는 것은 간단하다. 전개도가 주어졌을 때, 정육면체를 만들 수 있는 전개도인지 판단하고 가능하다면 숫자 1이 써져 있는 면의 반대 면에 위치한 숫자를 출력하는 것이다. 그렇다면 당연하게도 우리는 주어진 전개도가 정육면체를 만들 수 있는지 여부를 어떻게 판단할 것인가를 고민해야 한다. 2.1 정육면체 전개도의 종류 먼저 정육면체를 만들 수 있는 전개도의 종류는 아래 이미지와 같이 총 11가지가 있다. 그럼 첫 번째로, 11가지 유..

article thumbnail
[ 백준 20304 ] 비밀번호 제작
Algorithm/문제풀이 2023. 2. 18. 11:53

1. 문제 20304번: 비밀번호 제작 서강대학교 전산실에서 보안직원으로 일하는 향빈이는 한 통의 이메일을 받게 되었다. 이메일에는 서버 관리자 계정에 대한 비정상적인 로그인 시도가 감지되었다는 내용이 적혀 있었고, 첨부 www.acmicpc.net 2. 풀이 결과적으로 어떤 답을 만들어내야 하는가가 다소 헷갈릴 수 있는 문제의 유형이라 생각한다. 그 중 먼저 문제의 핵심인 안전거리와 안전도를 판단하는 방법을 알아본다. 2.1 안전거리와 안전도 3, 4 두 가지의 비밀번호가 입력된 적 있을 때, 2라는 비밀번호를 설정했을 때의 안전거리를 알아보자. 먼저 2, 3, 4를 이진수로 변환하면 아래와 같다. 3: 0011 4: 0100 2: 0010 (2,3)의 경우 서로다른 비트가 한 개이기 때문에 안전거리는..

article thumbnail
[ 백준 9742 ] 순열
Algorithm/문제풀이 2023. 2. 17. 15:16

1. 문제 9742번: 순열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전 www.acmicpc.net 2. 풀이 본 문제는 크게 두 가지 방법으로 풀이가 가능하다. 다만, 두 가지 경우 모두 사전 작업이 한 가지 필요한데 이는 바로 주어진 쿼리가 수행 가능한 쿼리인지 먼저 확인하는 것이다. 여기서 수행 가능한 쿼리란 어떤 것을 의미하는 것일까? 문제에서 주어진 순열의 인덱스가 과연 존재하는 인덱스인지 검증이 필요하다는 것이다. 서로 다른 문자로 이루어진 문자열로 순열을 만드는 방법은 (순열의 길이)! 이다. 즉, 입력 받은 순열의 길이 팩토리얼 값을 가지고..

[ 백준 14534번 ] String Permutation
Algorithm/문제풀이 2023. 2. 14. 09:24

1. 문제 14534번: String Permutation First line of the input contains T (1 ≤ T ≤ 200), the number of test cases. For each test case, there will a string of characters, L (1 ≤ L ≤ 5). www.acmicpc.net 2. 풀이 백트래킹의 가장 기본적인 유형인 순열 만들기 문제다. 집합의 요소를 사용했는지를 판단할 boolean 배열을 선언하여, 각 요소들의 사용여부를 변경해가며 순열을 만들면 해결할 수 있다. 다만 현재 문제는 조합(Combination)이 아닌 순열(Permutation)이므로, 백트래킹을 할 재귀 함수 내에서 시작지점은 항상 첫 요소로 설정해야 한다. 시..

[ 백준 6148번 ] Bookshelf 2
Algorithm/문제풀이 2023. 2. 13. 16:29

1. 문제 6148번: Bookshelf 2 Here we use cows 1, 3, 4, and 5, for a total height of 3 + 3 + 5 + 6 = 17. It is not possible to obtain a total height of 16, so the answer is 1. www.acmicpc.net 2. 풀이 문제를 간단하게 요약하면 다음과 같다. John이 가지고 있는 소들을 책장 높이 이상으로 쌓았을 때, 책장과 소들의 높이의 차이가 최소가 되는 경우를 구하라는 것이다. 조건들은 아래와 같다. N ≤ 20 (N은 소의 총 숫자) H_i ≤ 1,000,000 (소의 높이) 1 ≤ B ≤ S (B = 책장 높이, S = 전체 소 높이의 합 조건들로부터 유추할 수 있는 점..

반응형