본문 바로가기

BOJ749

[자바] 백준 3043 - 장난감 탱크 (java) 문제 : boj3043 필요 알고리즘 개념 그리디 알고리즘 논리적으로 최선의 경우를 만드는 과정을 잘 생각해 규칙을 정하면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 솔직히 그리디쪽은 티어가 좀 애매한것 같다. 일단 풀이 생각하는 과정은 개인적으로 실버4인 25379번(피하자) 보다 쉬웠다. 다만 구현은 확실히 이 문제가 더 어렵긴 하다. 그렇다고 플래 받을 정도는 아닌 것 같아서 좀 애매한 것 같다. 아무.. 2022. 10. 6.
[자바] 백준 25379 - 피하자 (java) 문제 : boj25379 필요 알고리즘 개념 그리디 알고리즘 논리적으로 어떻게 하는게 항상 최선일지 잘 생각해 규칙을 잘 정해보면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 그리디 문제이니, 내가 이 문제를 풀면서 생각한 흐름 그대로 풀이로 쓰는게 나을 것 같다. 1. 문제에서 요구하는 '홀수와 짝수가 인접한 경우가 최대 1번 등장하도록 하는 시행' 은 결국 '모든 짝수가 왼쪽이고 모든 홀수가 오른쪽' 이거.. 2022. 10. 5.
[자바] 백준 3733 - Shares (java) 문제 : boj3733 필요 알고리즘 개념 사칙연산, 수학, 구현 입력을 받아 간단한 사칙연산을 해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력 갯수에 제한이 없으므로, EOF(end of file) 까지 입력을 받아야 한다. BufferedReader로 입력을 받는 경우, 입력값이 null이라면 EOF이다. 문제 자체는 간단한데, N과 S를 입력으로 받은 후 S/(N+1)을 해주면 된다. 이 때 소수점은 .. 2022. 10. 4.
[자바] 백준 24568 - Cupcake Party (java) 문제 : boj24568 필요 알고리즘 개념 구현, 수학 문제에서 제시된 수식 그대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제 풀이를 보러 왔다면 사실 구현보다는 어떻게 입출력 받는지가 더 궁금해서 왔을 것 같다. 위 '자바로 백준 풀 때의 팁 및 주의점' 링크를 참고해보자. 문제 풀이는 간단한데, R과 S를 입력받은 후, 8R+3S - 28 을 출력해주면 된다. 'and a total of .. 2022. 10. 3.
[자바] 백준 14562 - 태권왕 (java) 문제 : boj14562 필요 알고리즘 개념 너비 우선 탐색 (bfs) 너비 우선 탐색을 떠오르기 힘들 수 있고 다른 풀이도 존재하는 문제이다. 이하 풀이는 너비 우선 탐색으로 진행한다. 백트래킹 부가적으로 백트래킹 개념도 넣으면 좋다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 일반적으로 bfs는 목적지(이 문제에서는 t에 해당)는 고정되어 있고 목적지까지 탐색해나가곤 한다. 하지만 출발지점과 목적지를 동시에 사용해서 .. 2022. 10. 1.
[자바] 백준 11779 - 최소비용 구하기 2 (java) 문제 : boj11779 필요 알고리즘 개념 다익스트라 (dijkstra) 다익스트라 응용 문제이다. 기본적인 다익스트라 구현방법은 알아야 풀 수 있고, 추가로 경로를 구할 방법도 생각해봐야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 다익스트라 공부용으로 추천하는 문제이다. 1854번 - K번째 최단 경로도 매우 추천한다. 다익스트라의 진행 경로를 출력해줘야 하는 문제이다. 처음엔 좀 당황스러웟는데, 반대로 목적지.. 2022. 9. 30.
[자바] 백준 9324 - 진짜 메시지 (java) 문제 : boj9324 필요 알고리즘 개념 문자열, 파싱, 구현 입력으로 주어진 문자열을 파싱하면서 문제에서 제시된대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된걸 구현하기 위해 필요한 항목은 다음과 같다. 1. 현재 문자열의 i번째 문자를 보고있을 때, 현재까지 i번째 문자와 동일한 문자가 이전에 몇 번 나왔는지 알 수 있어야 한다. -> 대문자만 입력으로 들어오므로, A부터 Z까지 2.. 2022. 9. 29.
[자바] 백준 25644 - 최대 상승 (java) 문제 : boj25644 필요 알고리즘 개념 그리디 매번 입력 중 최소값과, '현재값-최소값'의 최대값을 갱신하면서 모든 경우를 보면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제를 풀 때 주의할점이, 문제의 조건이 '주식 한 주를 적당한 시점에 사고 적당한 시점에 팔아서 얻을 수 있는 최대 이득' 이므로 딱 한번만 주식을 사야 한다는 점이다. 즉 입력이 '1 5 2 6' 일 경우 1에사고 5에 팔아서 4의 .. 2022. 9. 29.
[자바] 백준 14912 - 숫자 빈도수 (java) 문제 : boj14912 필요 알고리즘 개념 브루트포스 모든 경우의수를 확인해보면 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 최대 n은 10만이고, 최대 자리수는 6개이다. 따라서 1부터 n까지 모든 자리수를 하나씩 비교해보더라도 O(N)이면 되므로 브루트포스로 모든 경우를 확인해주면 된다. 각 자리수를 모두 확인하려면 우선 편한 방법으로는 1부터 n까지 각 수를 String으로 변경해준 뒤 Str.. 2022. 9. 29.
[자바] 백준 2740 - 행렬 곱셈 (java) 문제 : boj2740 필요 알고리즘 개념 구현, 수학 행렬 곱셈하는 방법을 알고 있다는 전제하에, 단순 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 혹시 행렬 곱셈 방법을 모른다면 애초에 이 문제를 풀 수 없으니 구글링을 통해 행렬 곱셈방법을 알아보자. 알고있다면, 이제 구현력(?)에 달려있다. 두 행렬을 입력받은 후 행렬 곱셈을 해주는 코드를 작성하면 되며, 구현방식을 잘 모르겠다면 이하 코드의 matri.. 2022. 9. 29.