목록BOJ (78)
Jun's Development Journey
문제 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. www.acmicpc.net 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.util.*; public class Main { static Scanner scan = new Scanner(System.in); static String test; static int get_num_words() { ..
문제 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..
문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 풀이 이 문제는 BruteForce와 DFS가 합쳐진 문제이다. 빈칸에 벽을 세울 수 있는 모든 경우의 수마다 바이러스가 퍼질 수 있..
문제 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 풀이 문제를 다시 말하면 9명의 난쟁이 중, 7명씩 골라서 키를 다 더해봤을 때 100이 되는 경우를 고르는 문제이다. 다만, 가능한 정답이 여러 가지인 경우에는 아무거나 출력하는 조건이 있으므로, 답을 찾으면 다른 예시를 찾는 경우를 줄이기 위해 체크하는 변수를 두어 처리해준다. 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 2..
문제 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 1 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 31 32 33 34 35 36 37 import java.util.*; public class Main { static Scanner scan = new Scanner(System.in); p..