본문 바로가기

BOJ742

[자바] 백준 22839 - Square Coins (java) 목차 문제 : boj22839 필요 알고리즘 동적 계획법 (DP), 배낭 문제 (냅색) 유명한 DP 유형인 냅색으로 해결할 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 살펴봐야 할 것이, 입력값의 최대치는 300이고, coin의 최대치는 17x17 이라는 점이다. 그리고 테스트케이스가 여러개 있긴하지만 어차피 300까지 모두 구해두면 각 테스트 케이스는 O(1)로 구할 수 있다. 따라서 1원부터 300원까지.. 2023. 5. 4.
[자바] 백준 27961 - 고양이는 많을수록 좋다 (java) 목차 문제 : boj27961 필요 알고리즘 그리디 0마리 이상 k마리 이하에 안낚이도록 그리디 규칙을 정할 수 있어야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 주의해야하는 점은 복제 마법 부분이다. 0마리 이상 k마리 이하라고 했는데, k마리 복제하지 않는게 이득인 경우가 과연 있을까? 없다(갯수 안넘어가게 조절할 때 빼고). 즉 이 문제는 고양이를 1마리 늘리거나, 2배 늘릴 수 있을 때 최소의 행동을 구하는.. 2023. 4. 19.
[자바] 백준 27960 - 사격 내기 (java) 목차 문제 : boj27960 필요 알고리즘 수학, 2진수 2진수를 떠올렸다면 풀만한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 과녁의 점수가 2진수의 각 자리수를 뜻하는걸 깨달았다면, 정수 표현방식과 동일하다는걸 떠올릴 수 있다. 즉, Sa, Sb 각각에 대해 어떤 과녁을 맞췄는지 항상 분리해낼 수 있다. 예를들어 7이라는 점수를 표현하려면 뭔가 과녁을 어떻게 조합하면 다양한 경우의 수가 있다고 생각할 수 있.. 2023. 4. 19.
[자바] 백준 27959 - 초코바 (java) 목차 문제 : boj27959 필요 알고리즘 사칙연산 간단한 곱셈, 비교 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 100N이 M 미만이라면 No, 이상이라면 Yes를 출력해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Mai.. 2023. 4. 19.
[자바] 백준 16099 - Larger Sport Facility (java) 목차 문제 : boj16099 필요 알고리즘 사칙연산 간단한 사칙연산 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 l_t, w_t, l_e, w_e 를 입력받은 후 l_t * w_t와 l_e * w_e를 비교한다. 같다면 Tie, 전자가 크다면 TelecomParisTech, 후자가 크다면 Eurecom를 출력해주면 된다. 다만 곱셈의 결과가 int로는 표현 불가능한 범위이므로 long을 사용해야 한다는 점은 주.. 2023. 4. 19.
[자바] 백준 25206 - 너의 평점은 (java) 목차 문제 : boj25206 필요 알고리즘 구현, 문자열 문자열을 잘 파싱해서 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 구현 로직은 다음과 같다. 1. 20줄 각각을 받으면서 첫 번째 문자는 필요없으니 버리고, 세 번째 입력값이 'P' 라면 다음 줄로 넘어간다. 2. 2번째 값을 double로 받은걸 grade, 3번째는 double로 과목평점을 변환해서 받은걸 rating 이.. 2023. 4. 15.
[자바] 백준 15025 - Judging Moose (java) 목차 문제 : boj15025 필요 알고리즘 구현 문제에서 제시된 대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 해석만 잘하면 제시된 대로 풀면 된다. 로직을 정리하면 다음과 같다. 1. L과 R을 입력받는다. 2. L과 R이 둘 다 0이면 "Not a moose" 3. L과 R 중 큰 값을 B라고 해보자. 4. L == R 이라면 "Even [B*2]"를 출력한다. 5. 그렇지 않다면 "Odd [B*.. 2023. 4. 14.
[자바] 백준 3359 - 사각 사각 (java) 목차 문제 : boj3359 필요 알고리즘 동적 계획법(DP) 사각형을 순서대로 보면서, 점화식을 만들어 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 완전 탐색으로 한번 생각해보자. 각 사각형은 a변이 위로 올라오게 놓거나, b변이 위로 올라오게 놓을 수 있으므로 O(2^n) 으로 구할 수 있다. 이 때 n이 최대 1000 이므로 완전 탐색으론 풀 수 없음을 알 수 있다. 그렇다면 우선 생각해볼.. 2023. 4. 13.
[자바] 백준 18352 - 특정 거리의 도시 찾기 (java) 목차 문제 : boj18352 필요 알고리즘 너비 우선 탐색(BFS) 일반적인 BFS 탐색에서, 최단 거리에 목적지를 도착하는게 아니고 특정 거리인 지점을 찾는다는점만 다르다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 BFS를 잘 모른다면 'BFS 알고리즘 (너비 우선 탐색)' 글을 참고해보자. 일반적인 BFS 알고리즘으로 구현해주면 되는데, 목적지까지의 최단 거리를 구하는게 아니라 특정 거리인 위치를 찾는다는 점이 다.. 2023. 4. 12.
[자바] 백준 16200 - 해커톤 (java) 목차 문제 : boj16200 필요 알고리즘 그리디, 정렬 그리디 규칙을 잘 생각해보면 의외로 쉽게 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 결국 팀을 어떻게 정하는게 항상 최선의 선택일지 규칙을 정해야 한다. 얼핏 X값이 큰 학생들부터 골라서 선택해야 각 팀의 인원이 많아지므로 팀의 수가 줄어든다고 생각할 수 있는데, 어차피 X값은 고정된 것이고 바뀔 수 없으며, 모든 학생은 하나의 팀에 소속이 되어야만.. 2023. 4. 11.