목록BOJ/BruteForce (10)
Jun's Development Journey
문제 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; import java.util.StringTokenizer; import java.util.Map.*; publ..
문제 www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 풀이 - 풀이 중점 - 1) 주어진 숫자를 char 형 배열로 변형 및 순열을 사용하여 모든 경우의 수를 구했다. 2) 숫자의 길이를 알기 때문에 Math.pow() 함수를 이용하여 숫자를 생성했다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import jav..
문제 www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 풀이 - 중요한 점- 1) K는 반드시 포함 되어야 하는 5 알파벳 수(a,c,i,n,t)의 갯수보다 작으면 단어를 배울 수가 없다. 2) 단어에 반드시 포함되는 앞뒤에 쓰이는 알파벳은 미리 체크해놓고 문자열을 가운데만 잘라서 이용한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamRea..
문제 www.acmicpc.net/problem/15728 15728번: 에리 - 카드 첫째 줄에 N, K(0 ≤ K < N ≤ 100)가 주어지고 둘째 줄에는 N개의 ‘공유 숫자카드’에 적혀 있는 정수, 셋째 줄에는 N개의 ‘팀 숫자카드’에 적혀 있는 정수가 주어진다. 이 수는 -10,000보다 크거나 www.acmicpc.net 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class BOJ_15728 { static int N,K; static ArrayList share, team; public static void main(..
문제 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 1) 삼중 포문 import java.io.*; import java.util.*; public class Main { static int min = Integer.MAX_VALUE; static int closest_for(int[] cards, int N, int M) { for(int i=0;i
문제 www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 import java.io.*; import java.util.*; public class Main { static boolean[] broken; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..
문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 풀이 지금 껏 해왔던 방법대로 조합을 구하기 위해서 tmp라는 임시 정수 배열을 이용해서 구했다. 항상 이 방법을 사용하면서 추가적인 공간을 사용하기 때문에 더 좋은 방법은 없나 알아봤었지만 재귀에 익숙하지 않았기 때문에 다른 사람의 코드를 봐도 이해가 잘 되지 않았다. 이에 반성하고 공간 복잡도를 줄일 수 있도록 더 공부해서 개선된 코드를 추후에 추가해야..
문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 이 문제 또한 전형적인 모든 경우의 수 문제이다. 날짜 시작점에 따라서 주어진 N을 넘지 않는 선에서 재귀를 이용해서 Max값을 계속 갱신해주면서 발생하는 최대의 비용 값을 구하도록 구현했다. 처음에는 이중 for문을 통해서 구하려고 했지만 반복문에 사용되는 첨자 변수를 사용하면 안되는 것인지 몰라도 C++이나 자바에서 증감을 해주지 못했다. 이 측면은 다시 알아보고 공부해야겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30..