본문 바로가기

백준알고리즘9

[Java]백준 1992번 :: 쿼드트리 백준 온라인 저지 1992번 '쿼드트리' Java 알고리즘 문제풀이 풀이 이 문제는 분할정복(Divide and Conquer)로 풀면된다. 분할정복 사실은 정말 쉬운 개념이다. 복잡한 문제를 해결할 수 있는 작은 단위로 나누어 처리하고 이것을 합치면 된다. 이 문제를 풀면 백준 1780번 문제 종이의 개수도 아주 쉽게 풀 수 있을 것이다. (유사한 문제 풀기 -> 백준 1780번 문제종이 https://developer-mac.tistory.com/38) 그리고 쿼드트리는 단순히 노드가 4개 있는 것이라고 생각하면 된다. 즉, 4개로 쪼개서 4개의 노드가 생겨난다고 생각하면 된다. 먼저 입력을 받은 후 divide 함수에서 재귀적으로 동작하고 if 문을 두어 모든 원소가 0이거나 1일때 빠져나오게 하면.. 2018. 10. 28.
[Java]백준 4344번 :: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균을 넘는다고 생각한다. 이걸 깨야한다. 테스트 케이스 개수를 입력받고 둘째줄 부터는 학생들의 점수가 입력된다. 입력 첫째 줄에는 테스트케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 문제풀이 * Java 언어로 구현했습니다. 간단한 문제에 속한다. 이번에도 Time out문제로 Scanner가 아닌 BufferedReader, BufferedWriter를 이용해서 입력값을 받는다. 사용자가 입력한 테스트 케이스는 trim()을 이용해 n값을 받고, 두번째 줄부터 입력한 학생들.. 2018. 7. 5.
[Java]백준 15552 :: 빠른 A+B 문제 테스트 케이스 갯수 n만큼 사용자에게 입력받은 두 정수 A, B의 합을 순서대로 출력한다. 입력 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. 문제풀이 * Java 언어로 구현했습니다. 이 문제는 Scanner로 풀었으면 정말 간단하게 풀었을 문제다. 그러나 테스트 케이스가 만약에 작다면 Scanner을 사용했을 때 시간상 문제가 없겠지만 1,000개 10,000개가 넘어간다면 Scanner을 10,000번 부르는 것이므로 성능상 문제가 생긴다. 이때 Buffer을 이용해서 문제를 푼다. Buffere에 n값을 입력받는데 trim()을 이용해서 Buffer에서 잘라낸다. (n.. 2018. 7. 5.