본문 바로가기

Develop/백준 (Cpp)655

[백준] 3933번 : 라그랑주의 네 제곱수 정리 (C++) 3933번 : 라그랑주의 네 제곱수 정리 문제) 양의 정수는 많아야 4개의 제곱수로 표현할 수 있다고 한다. 이 이론을 라그랑주의 네 제곱수 정리라고 한다. 이 정리는 조제프루이 라그랑주가 1770년에 증명했다. 우리는 이 이론을 증명하거나 새로운 이론을 발견할 필요는 없고, n이 주어졌을 때 4개 이하의 양의 제곱수의 합으로 n을 만들 수 있는 경우의 수를 구하려고 한다. 경우의 수를 구할 때 제곱수의 순서가 바뀌는 경우는 같은 경우로 본다. 따라서 3^2 + 4^2 과 4^2 + 3^2는 같은 경우이다. N이 25일 때 4개 이하의 제곱수의 합으로 표현 할 수 있는 경우는 1^2 + 2^2 + 2^2 + 4^2, 3^2 + 4^2, 5^2 이렇게 3가지이다. 입력 : 입력은 최대 255줄이다. 각 줄.. 2024. 3. 8.
[백준] 1107번 : 리모컨 (C++) 1107번 : 리모컨 문제) 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 입력 : 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘.. 2024. 2. 24.
[백준] 24954번 : 물약 구매 (C++) 24954번 : 물약 구매 문제) 준겸이는 모험가이다. 모험을 떠나기 위해서는 철저한 사전 준비를 갖추어야 한다. 준겸이는 모험을 떠나기 전 N종류의 물약을 모두 구매하려고 한다. 물약 상점에 들른 준겸이는 각 물약이 1번부터 N번까지 번호가 매겨져 있다는 것을 알아냈다. 그런데, 물약 상점에서는 오늘 특별한 이벤트를 하고 있었다. 특정 물약을 구매하면, 어떤 다른 물약들을 할인해준다는 것이었다. 원래 i번째 물약의 가격은 동전 c_i개이다. 만약 i번째 물약을 구매하면, p_i종류의 다른 물약의 가격이 내려간다. 할인은 중첩된다. 예를 들어 1번 물약을 구매하면 3번 물약의 가격이 동전 1개만큼 할인되고, 2번 물약을 구매하면 역시 3번 물약의 가격이 동전 2개만큼 할인된다고 하자. 그러면 두 물약을 .. 2024. 2. 24.
[백준] 28447번 : 마라탕 재료 고르기 (C++) 28447번 : 마라탕 재료 고르기 문제) 하얔이는 마라탕에 여러 재료를 넣어 먹는 것을 좋아한다. 하지만 마라탕에 항상 많은 재료를 넣는다고 맛있는 것은 아니다. 마라탕은 각 재료마다 궁합이 존재해서 같이 넣으면 맛있는 재료도 있고 그렇지 않은 경우도 있다. 여기서 하얔이는 고민에 빠졌다. 대체 어떻게 해야 K개의 재료를 넣었을 때 마라탕의 맛을 최대로 할 수 있는거지? C_i, j를 재료 i와 재료 j를 같이 넣었을 때의 궁합이라 하자. 마라탕의 맛은 마라탕에 들어간 모든 재료 쌍의 궁합의 합이다. 고른 재료의 그룹을 G라고 했을 때 마라탕의 맛을 수식으로 표현하면 다음과 같다. 가여운 하얔이를 위해 재료를 K개만 사용했을 때의 최대의 마라탕의 맛을 구해보자. 입력 : 출력 : 첫째 줄에 K개의 재료.. 2024. 2. 24.