백준 11508 자바 - 2+1 세일 (BOJ 11508 JAVA)
문제 : boj11508 1. 어떻게 최소 비용을 만들 수 있을까? 어차피 중복해서 물건을 구매할 수 없고, 모든 물건을 구매해야 하므로 N개의 물건에 대해 'N/3(내림)'개의 물건만을 2+1 세일로 가격을 빼낼 수 있다. 이걸 변경할 방법이 없으므로, 결국 최대한 비싼 물건을 세일로 빼내는 것이 최소 비용을 만들 수 있는 방법이다. 이 때 특정 3개의 문제를 골랐을 때 이 중 가장 싼 물건의 가격이 빠지는 것이고, 이 '가장 싼 물건'이 최대한 비싼 물건일수록 이득이므로 결국 비싼 물건들부터 고르는 것 말고는 최소 비용을 만들 수 있는 방법이 없다. 즉, 문제 설명에서 나온 7개의 유제품 '10, 9, 4, 2, 6, 4, 3'을 봐보자. 문제에서는 위의 표처럼 그룹지었지만, 세일로 빠지는 가격을 늘..
2022. 2. 22.
백준 11468 자바 - Concatenation (BOJ 11468 JAVA)
문제 : boj11468 1. 우선 모든 경우의 수를 생각해보자. 예제 입력 1의 cat과 dog를 봐보자. 나올 수 있는 모든 경우는 다음과 같다. (cg, cog, cdog, cag, caog, cadog, catg, catog, catdog의 9가지) 이와같이 A와 B가 입력으로 들어온다면, 모든 경우의 수는 [A의 문자 수 x B의 문자 수] 임을 알 수 있다. 2. 그럼 언제 중복된 경우가 발생할까? bbb와 bzz를 확인해보자. 이와 같이 동일한 문자가 존재하는 경우 중복값이 발생한다. 다만 이 때, A 단어의 맨 앞 문자는 무조건 들어가야 하고(non-empty prefix), B 문자의 맨 뒤 글자도 무조건 들어가야 하므로(non-empty suffix) A 문자의 맨 첫문자와, B 문자의..
2022. 2. 21.