본문 바로가기

Algorithm

(5)
백준 1018 : 체스판 다시 칠하기 문제 바로 가기https://www.acmicpc.net/problem/1018 접근 방법 Step1. 체스판 자르기문제에서 주어진 체스판의 크기는 항상 8 x 8 사이즈가 아니기 때문에, 8 x 8 이상의 크기를 가지는 체스판이라면 해당 체스판에서 나올 수 있는 체스판의 종류는 여러 가지가 나올 수 있다.가령 9 x 9 크기의 체스판이 있다면 이는 아래와 같이 4가지 버전으로 나누어질 수 있다.우리가 필요한 것은 위의 4가지 버전의 체스판 중에서 가장 적게 다시 칠해도 되는 체스판을 선택하는 것이다.즉, 각각의 체스판에서 다시 칠해야 할 칸 수를 세어보고, 다음 체스판에서 다시 칠해야 할 칸 수와 비교해보면서 모든 체스판을 비교해야 하는 브루트 포스 접근이 필요한 것이다. Step 2. 체스판의 최소 ..
백준 1024 : 수열의 합 문제 바로 가기https://www.acmicpc.net/problem/1024 접근 방법연속된 수의 합을 구하는 방법에 대한 규칙을 찾는 것이 핵심이다.연속된 수의 합을 구하는 방법은 다양한 방법을 사용할 수 있겠지만, 나는 가장 작은 수와 가장 큰 수를 더해서 연속된 갯수만큼 곱한 후 2로 나누는 방법을 사용했다.예를 들어서 `3, 4, 5, 6, 7` 이라는 연속된 숫자가 있다고 생각해보자.가장 작은 수와 가장 큰 수를 모두 더해보면 아래와 같이 될 수 있다.`3 + 7 = 10``4 + 6 = 10``5 + 5 = 10``6 + 4 = 10``7 + 3 = 10``10 \times 5 = 50` 은 3부터 7까지 합한 값의 2배가 된다. 따라서 2로 나누어주면 3부터 7까지 연속된 수의 합인 25..
백준 1065 : 한수(자바) 문제 바로 가기https://www.acmicpc.net/problem/1065 접근 방법한수의 규칙을 적용할 수 있는 함수를 하나 생성해서 그대로 구현하면 된다. 다만, 한수의 규칙을 생각해 보면 1 이상 100 미만의 숫자는 모두 한수에 해당하고 해당 범위 사이의 숫자를 입력받는다면 해당 숫자가 한수의 개수가 된다. 이 점을 고려하면 계산 과정을 조금은 줄일 수 있다. Step 1.한수를 구하는 함수인 isArithmeticSequence를 구현하지 않고 단순히 정의만 해둔 상태에서 위에서 다룬 로직을 구현한다.BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWr..
백준 1057 : 토너먼트 (자바) 문제 바로 가기https://www.acmicpc.net/problem/1057 접근 방법수학적인 규칙을 찾으면 될 것 같다는 생각은 했지만, 수학적 규칙을 빠르게 찾아내지 못하는 편이라 고민을 좀 했다. 수학적인 규칙을 찾았다면 코드를 작성하는 것은 빠르게 끝낼 수 있다.Step 01. 규칙 찾기라운드마다 참가자의 번호는 갱신된다. 따라서 누가 토너먼트에서 이겼는지 정확한 번호를 아는 것은 크게 의미가 없다. 라운드마다 번호를 매기는 순서는 처음 번호의 순서를 유지한다는 규칙이 있기 때문에 이 점을 고려하여 규칙을 생성할 수 있다.1과 2는 함께 대결하게 되고, 다음 라운드에서 이 둘 중 하나가 다음 라운드에 진출했을 때 진출한 사람은 다시 참가 번호 1번을 얻게 된다. 이때의 규칙을 살펴보면 참가자의..
백준 4673 : 셀프 넘버 (자바) 문제https://www.acmicpc.net/problem/4673 접근 방법Step 1.셀프 넘버가 아닌 숫자를 찾아내는 함수를 정의한다.주어진 수에 대해 주어진 수와 주어진 수의 각 자릿수를 합하여 새로운 수를 생성하는 함수를 작성하고, 새로운 수를 1부터 10000까지 담긴 배열에서 제거하는 로직으로 구현할 예정이다.public static int kaprekar(int number) { int sum = number; while (number != 0) { sum += number % 10; number = number / 10; } return sum;}main 함수가 static이기 때문에 kaprekar 함수도 static으로 만들어준다. St..