본문 바로가기

많은 조건 분기7

[자바] 백준 27162 - Yacht Dice (java) 문제 : boj27162 필요 알고리즘 개념 많은 조건 분기, 구현, 브루트포스 많은 조건을 분기해줘야 하는 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 한 함수에서 if문으로 모두 처리하게 되면 디버깅이 쉽지 않다. 내 경우엔 클래스로 구성을 나누었다. Pedigree 라는 인터페이스가 있는데, 각 족보를 뜻한다. 내부에 maxScore(int[] arr)만 있고 해당 Pedgree의 구현체로 얻을 수 있는.. 2023. 1. 15.
[자바] 백준 17387 - 선분 교차 2 (java) 문제 : boj17387 필요 알고리즘 개념 선분 교차 판정 (기하학, CCW) 선분 교차 판정 알고리즘으로 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 CCW를 이용한 선분 교차 여부 판정을 보고 그대로 구현해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringToken.. 2022. 11. 25.
[자바] 백준 23814 - 아 저는 볶음밥이요 (java) 문제 : boj23814 필요 알고리즘 개념 많은 조건 분기 여러 가능성을 고려해야 한다. 수학 이 문제를 풀기 위해 수식을 세울 수 있어야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 말로만 적어서 한번 생각해보자. 결국 군만두가 최대치가 되어야 한다는게 가장 중요한 조건이고, 그러면서도 볶음밥의 최대 수를 구해야 한다. 1. 그렇다면 군만두를 최대치로 만들 수 없다면 볶음밥을 아무리 많이 주문 가능해도 버려.. 2022. 9. 17.
[자바] 백준 2936 - 채식주의자 (boj java) 문제 : boj2936 우선 이 문제를 풀기위한 가장 기본이 되는 개념부터 알아야 한다. 초등학교나 언젠가 배웠을테지만 까먹었을 수도 있으므로! 삼각형의 넓이는 한 변만 x나 y축에 평행하다면, 평행한 면의 길이 w와, 그와 수직인 높이 h에 대해 w*h/2 로 구할 수 있다. 즉, 아래와 같은 삼각형 3개(검정, 주황, 초록)는 w가 셋 다 동일하고 h도 동일하므로 다른 것 처럼 생겼지만 사실 넓이는 전부 동일하다. 위의 개념만 잘 알고 있다면 문제에서 제시된 삼각형의 어느 지점의 한 점이 주어지더라도 두 구역의 넓이를 동일하게 하는 넓이를 구할 수 있다. 예를들어 아래처럼 주황선으로 나뉜 구역의 넓이는 다음과 같이 w와 h를 잡으면 된다. 이 문제의 경우 입력에 따라 다양한 경우가 존재한다. 따라서 .. 2022. 5. 10.
[자바] 백준 24586 - Code Guessing (boj java) 문제 : boj24586 문제의 조건을 만족하는 경우를 직접 생각해보며 (신중히) 찾아보면 된다. 우선 입력으로 들어올 수 있는 문자열의 모든 경우를 살펴보면 아래와 같다. 그럼 각각의 경우에 A가 어떤 값이어야 'uniquely determine the two digits on Bob’s cards'라는 조건에 부합하는지 확인해보면 다음과 같다. 이유는 잘 생각해보면 알 수 있다! 저 경우에만 B를 확정적으로 예상할 수 있다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private static boolean ch.. 2022. 5. 5.
백준 1287 자바, 파이썬 - 할 수 있다 (BOJ 1287 JAVA, Python) 문제 : boj1287 사실 계산기 구현이니 난이도 때문에 플래라고 보긴 힘든 문제이다. 다만 파이썬으로 날먹하지 않는 이상은 빡구현이 필요하므로 티어가 높아진듯하다(총 1000자리가 입력으로 주어지므로, 500자리 곱하기 500자리와 같은 큰 수 연산이 필요하다). C로는 더 심한 빡구현이 필요해서 도전한 사람이 아직 없는듯하다 ㅋㅋㅋ 1. 우선은 날먹부터 일단 대충 봐도 한방에 계산해주는 무언가가 있다면 날먹이 가능할것처럼 생겼다. 우선은 자바에서 시도를 해봤었다. 아래와 같은 코드인데, 자바스크립트 엔진을 가져와서 자바에서 쓸 수 있다. 그럼 자바스크립트의 eval 함수를 사용해서 바로 계산이 가능하다. ScriptEngineManager scriptEngineManager = new ScriptE.. 2022. 2. 5.
백준 20127 자바 - Y-수열 (BOJ 20127 JAVA) 문제 : boj20127 증가수열 또는 감소수열인 것은 해결 로직을 세우는데에 상관이 없다. 증가수열, 감소수열 둘다 별도 로직으로 계산한다고 생각하면 그 중 작은걸 출력하면 된다. 기본적으론 이런데, 이 문제의 경우 정답률이 낮은만큼 많은 경우를 세세하게 예외처리해줘야 통과할 수 있다. 이하 여러가지 케이스에 대해 설명해본다. 1. 기본 로직은 증가수열을 체크한다면 수가 작아지는 부분을, 감소수열을 체크한다면 수가 커지는 부분의 개수가 2개 이상이라면 증가 혹은 감소수열이 될 수 없다. 예를들어 '예제 입력 1'에 대해 증가수열로써 체크한다면 감소하는 경우가 1번 이하이므로 가능하다! 하지만 감소수열로써 체크한다면 감소하는 경우가 2번 이상이므로 감소수열로는 만들 수 없다. 2. 이번엔 '1'와 같은 .. 2021. 12. 26.