https://www.acmicpc.net/problem/18290 18290번: NM과 K (1) 크기가 N×M인 격자판의 각 칸에 정수가 하나씩 들어있다. 이 격자판에서 칸 K개를 선택할 것이고, 선택한 칸에 들어있는 수를 모두 더한 값의 최댓값을 구하려고 한다. 단, 선택한 두 칸이 인접 www.acmicpc.net [풀이] 백트래킹 및 DFS를 이용하여 풀었습니다. answer 변수는 주어지는 배열의 값이 음수가 입력될 수 있으므로 Integer.MIN_VALUE를 이용했습니다. check() 메소드에서, 이동하는 위치의 값이 인접한 곳일 경우(상하좌우), boolean 값을 false로 반환하여 이동하지 못하도록 했습니다. 재귀형식의 메소드 실행 횟수가 K 변수와 같아진다면 answer 변수의 ..
https://www.acmicpc.net/problem/16938 16938번: 캠프 준비 난이도가 10, 30인 문제를 고르거나, 20, 30인 문제를 고르면 된다. www.acmicpc.net [풀이] 조합론, 그리고 브루트포스 유형의 문제입니다. 캠프에 사용할 문제를 고르는 방법 수는 nC2 + nC3 + nC4 + --- + nCn 이렇게됩니다. 이렇게 조합되는 경우를 문제에 맞게 확인해야합니다. 합이 L보다 크거나 같고, R보다 작거나 같아야 합니다. 가장 어려운 문제와 가장 쉬운 문제의 난이도 차이는 X보다 크거나 같아야 합니다. 이렇게 조합을 이용해서 문제를 푸는 경우가 처음이라 조합을 익히는데 좋은 문제라고 생각합니다.(저도 추후 다시 풀 예정!) [코드] import java.io.Bu..
https://www.acmicpc.net/problem/5347 5347번: LCM 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 최소공배수는 a * b / 최대공약수 인 점을 이용했습니다. 주어지는 수는 모두 백만보다 작거나 같아 int형으로 표현 가능하지만, 최소공배수의 경우에는 int형의 범위를 벗어나서 long형으로 표현해야 합니다. 이 long , int 형에 대한 주의를 한다면 풀 수 있습니다. 저 또한 이 부분을 놓쳐서, 처음에 틀렸습니다. [코드] import java.io.BufferedReader; import java.io..
https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net [풀이] 어떤 수 N의 진짜 약수가 모두 주어질 때이므로 최소값과 최대값의 곱이 곧 N을 의미합니다. 1과 자기 자신은 입력되지 않기 때문에 최소값과 최대값을 구하면 됩니다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.String..
https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net [풀이] 브루트포스 유형의 문제였으며 DFS를 이용해 풀었습니다. 구현해야하는 조건은 3가지였습니다. 모음이 최소 1개 포함되야 한다. 자음이 최소 2개 포함되야 한다. 길이가 L이어야 합니다. 이 두가지를 확인하는 메소드를 구현했습니다. dfs 메소드를 재귀적으로 호출하면서 출력합니다. [코드] import java.io.BufferedReader; import java.io.IOException; ..
https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net [풀이] 브루트 포스 유형의 문제이지만, 단순하게 반복문을 이용하여 각 라운드에 대한 코드를 구현하면 풀 수있었습니다. 김지민과 임한수가 붙게 되는 라운드 번호를 출력하면 되므로, 한 라운드가 진행할 때마다 새로 부여받는 번호에 대해서 비교를 하면 되었습니다. 부여받는 번호에서 1을 뺀 후, 2를 나눈 몫은 만약 붙게 될경우에는 같은 몫을 반환하며 그렇지 않을 경우에는 상이한 몫을 반환합니다. 이러한 점..