그리디93 [자바] 백준 19700 - 수업 (java) 목차문제 : boj19700 필요 알고리즘그리디, 이분탐색그리디 아이디어만 있으면 난이도가 확 줄어드는 문제이다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 하나의 아이디어를 넣으면 난이도가 급하락하는 좋은 문제이다. 입력받은 h와 k를 h 기준으로 내림차순으로 정렬한다고 해보자. 그리고 h가 높은 순서대로 확인을 할껀데, 이래도 되는 이유가 '학생들의 키는 모두 다르다' 라는 조건이 있기 때문이다. 이렇게되면 난.. 2024. 5. 16. [자바] 백준 31778 - PPC 만들기 (java) 목차문제 : boj31778 필요 알고리즘그리디, 투 포인터 (두 포인터), 수학 그리디 아이디어로 풀 수 있고, 내 경우 투 포인터를 사용해 구현했다. 경우의 수를 찾기 위해 약간의 수학적 지식도 필요하다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 어떻게 K번 연산을 적용해야 PPC 부분문자열의 최대치가 될지부터 생각해보자. 직관적으로 찾기 어렵지 않은데, 아무튼 최대한 많은 P가 앞쪽으로 가야하고, 최대한 .. 2024. 4. 30. [자바] 백준 28109 - 약속 장소 2 (java) 목차문제 : boj28109 필요 알고리즘문자열, 그리디규칙을 찾아 그리디로 해결 가능하다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 규칙만 찾으면 로직은 생각보다 간단하다."CDD" 를 가지고 한 글자만 변경해서 사전순으로 어떻게 나타낼 수 있을지 생각해보자.순서대로 살펴보면 아래와 같다.// 첫번째 글자만 변경됨ADDBDD// 두번째 글자만 변경됨CADCBDCCD// 세번째 글자만 변경됨CCACCBCDC// 자기.. 2024. 4. 25. [자바] 백준 2036 - 수열의 점수 (java) 목차 문제 : boj2036 필요 알고리즘 그리디 최선의 방법을 찾아 규칙대로 구현하면 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력으로 들어오는 값은 결국 음수, 0, 양수 이렇게 3가지 종류이다. 이 때 곱해서 이득이 되는걸 생각해보자. 음수와 음수, 음수와 0, 양수와 양수 이렇게 3가지 경우이다. 그 외의 경우엔 항상 손해이다. 또한 음수와 0 보다는 음수와 음수가 더 이득이다. 그래서 대.. 2023. 11. 30. [자바] 백준 25381 - ABBC (java) 목차 문제 : boj25381 필요 알고리즘 그리디 적절한 규칙을 적용해 선택해 나가는 방식으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 어.. 이럼 되지 않나? 해서 구현해보니 됬다. 그래서 딱히 풀이랄건 없구 규칙을 적어보면 다음과 같다. 1. 'C'를 좌측부터 우측으로 차례대로 찾으면서, 해당 위치 이전에 가장 처음으로 나왔던 'B'와 함께 지운다. 2. 'A'를 우측부터 좌측으로 차례대로 .. 2023. 11. 29. [자바] 백준 11108 - TV 전쟁 (java) 목차 문제 : boj11108 필요 알고리즘 동적 계획법 (DP), 그리디 최선의 규칙을 모든 경우에 적용할 수 있는 그리디 문제이고, 직전까지의 최대 값을 알기 위해 DP를 사용했다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서 시간의 최대값은 10080이다. dp[x]를 '시간 x까지 획득 가능한 선호도의 최대치' 라고 정의해보자. 예를들어 예제 입력 1을 보자. 1 3 3 8 10 1 4 6 6 4 5 d.. 2023. 11. 21. [자바] 백준 11912 - 격자 보존하기 (java) 목차 문제 : boj11912 필요 알고리즘 그리디 알고리즘 규칙만 찾으면 쉽게 접근 가능하다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 아이디어만 떠오르면 어렵지 않은 문제이다. 말이 있을 때, 격자를 놓을 수 있는 경우의 수를 생각해보자. 사실 이것만 생각나면 끝인 문제이다. 1. 첫 번째 말 앞에 1개의 격자를 두는 경우 -> 문제 내에서 1번만 가능 2. 마지막 말 뒤에 1개의 격자를 두는 경우 -> 문제 내에서.. 2023. 8. 11. [자바] 백준 2138 - 전구와 스위치 (java) 목차 문제 : boj2138 필요 알고리즘 그리디 (탐욕법, greedy) 하나의 규칙을 적용해 최선의 답을 도출해낼 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 만약 i번 스위치를 누르면 i번 스위치만 변경된다고 해보자. 이 경우 000 에서 010 으로 만들려면 어떻게 해야 할까? 자명하게도 그냥 좌측부터 서로 비교해보면서 서로 다른걸 누르면 되므로 1번만 누르면 된다. 그럼 i번 스위치를 누르면 i.. 2023. 8. 11. [자바] 백준 9241 - 바이러스 복제 (java) 목차 문제 : boj9241 필요 알고리즘 그리디 알고리즘 그리디 풀이는 바로 보일 것 같다! ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 개인적으로 약간 선 넘는 문제였다. 일단 입력받은 문자열이 A, B 라고 한다면 A와 B 각각 앞부터와 뒤부터 동일한 부분이 어디까지인지 파악한다. 선 넘는다고 생각한 부분은, 당연히 하나 이상의 DNA는 바꿔야 된다고 생각했다. 예를들어 입력이 AAA와 AA일 경우 'AA' 를 제거 .. 2023. 7. 25. [자바] 백준 1263 - 시간 관리 (java) 목차 문제 : boj1263 필요 알고리즘 그리디 잘 생각해보면 어! 이렇게 하면 되지 않나? 싶은 룰이 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서 물어보는건 모든 일을 끝낼 수 있는 가장 늦은 시간이다. 근데 좀 바꿔서 생각해보자. 애초에 모든 일을 끝낼 수 있나 없나를 어떻게 판단할 수 있을까? 중요한건 S값이다. 언제 시작하는진 상관없고, 아무튼 N개의 일들에 대해 각 S값 이내로만 끝낼 수 있으.. 2023. 7. 20. 이전 1 2 3 4 ··· 10 다음