Java77 [백준] JAVA 자바 : 바이러스 (2606번) 가장 전형적인 너비 우선 탐색의 문제라고 볼 수 있다.연결된 그래프의 정점들을 탐색한다면 정점을 몇 번 순회하게 되는지 구하면 된다.사실 깊이 우선 탐색으로 풀어도 답은 똑같이 나올 것 같은데, 문제가 요구하는 대로 푸려면 너비 우선 탐색이 더 적합한 것 같다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Virus { static int N; // 컴퓨터의 수 static int M; // 간선의 수 .. 2024. 7. 11. [백준] JAVA 자바 : 팰린드롬 만들기 (1254번) 앞에서 읽으나 뒤로 읽으나 같아지는 팰린드롬을 가장 짧게 만드는 문제이다. 근데 사실 푼 지 거의 2주가 지나서 어떻게 풀었는지 자세하게 기억이 나진 않는다(...)분명 보고 쉽게 파악할 수 있는 코드를 짜려고 노력했는데...ㅋㅋㅋ 대충 i~j번째 글자를 잘라내서, 뒤집어도 똑같은 단어 중 가장 길이가 짧다면 그 때 남은 단어를 붙인 길이를 구하는 방식으로 짰던 것 같다.자세한 건 나도 좀 더 봐야 알 수 있을 듯...import java.util.*;import java.io.*;public class MakePalindrome { public static void main(String[] args) throws IOException { BufferedReader br = new Buff.. 2024. 7. 9. [백준] JAVA 자바 : 일곱 난쟁이 (2309번) 주어진 아홉 마리의 난쟁이의 키를 보고, 일곱 마리의 난쟁이의 키를 구하는 것이다. 이 문제는 어렵지 않게 구할 수 있다. 나는 아래와 같은 로직으로 해결했다.1. 아홉 마리의 난쟁이의 키를 모두 더한 후, 100과 빼서 그 차이(diff)를 구한다.2. 아홉 마리의 난쟁이의 키를 중첩 반복문으로 돌면서, 둘의 키의 합이 diff가 되는 두 i, j를 구한다.3. i번째와 j번째 난쟁이의 키를 0으로 만든 후 배열을 정렬하고 출력한다. 이 정도만 보면 다들 쉽게 해결할 수 있을 거라고 생각한다.i와 j를 구했다면 diff를 9999로 바꿔주어야 하는데, 그 과정이 없다면 외부 for문을 계속 돌아서 똑같은 i와 j 밸류가 있다면 그것까지 0으로 바꾸기 때문... import java.util.*;impo.. 2024. 6. 21. [백준] JAVA 자바 : 영화감독 숌 (1436번) 문제는 대강 이렇다.따로 쓰기 귀찮으니 스샷을 참조해주십쇼. 사실 나는 문제를 이해하는 데만 한 10분은 걸린 것 같다...끝내 종말을 나타내는 수는 666이 포함되는 수라고 이해할 수 있었다! 그러면... 우리는 아래 사항들을 고려해 보아야 한다.1. 숫자의 끝 부분에 6이 들어가지 않는 경우이 경우에는 그냥 현재 수의 마지막에 666을 붙여주기만 하면 된다. 2. 숫자의 끝 부분에 6이 하나 들어가는 경우이 경우에는 현재 수의 마지막에 660~669까지 붙일 수 있다.왜냐? 현재 수가 16이라면 16과 66x를 붙여서 1666x가 되어 종말을 나타내는 수가 되니까! 3. 숫자의 끝 부분에 6이 두 개 들어가는 경우이 경우에는 현재 수의 마지막에 600~699까지 붙일 수 있다. 4. 숫자에 666이 .. 2024. 6. 21. [백준] JAVA 자바 : 덩치 (7568번) 각 사람들의 덩치를 구해서, 순위를 책정하는 문제이다.여기서 덩치가 더 크다는 뜻은 몸무게가 더 무겁고 키가 더 크다는 것이다 (같은 건 포함되지 않음) 그래서 내가 생각한 로직은,우선 모든 사람의 몸무게와 키를 입력받은 다음그 배열들을 모두 돌면서 자신보다 덩치가 더 큰 사람들의 수를 구해서(이중 for문)자신보다 덩치가 더 큰 사람들의 수 + 1을 순위로 출력하는 것이다. 브루트포스는... 진짜 공부 많이 해야 겠다...사실 이 문제도 문제를 제대로 이해 못 해서 거의 40분이나 걸려서 풂...ㅋㅋㅋㅋ 진짜 실화야?실버 단계는 큰 고민 안 하고 풀었었는데... 브루트포스는 실버만 돼도 어렵게 느껴지네.... import java.io.BufferedReader;import java.io.IOExcep.. 2024. 5. 25. [백준] JAVA 자바 : 체스판 다시 칠하기 (1018번) 무작위로 칠해져 있는 체스판에서, 가장 적게 색을 다시 칠할 수 있는 8x8 체스판을 오려낼 때의 다시 칠하는 수를 출력하는 문제이다. 나는 어떤 로직을 구상했냐면, 주어진 체스판에서 기준점을 잡는다. 이 기준점의 가로와 세로는 각각 0 ~ N-8, 0 ~ M-8까지의 범위를 가진다. (그 이상을 넘어가면 범위가 초과되므로 그 점을 기준으로 하는 8x8 체스판을 오려낼 수 없기 때문) 그리고 그 기준점을 모두 돌면서, 각 기준점 별로 오른쪽으로 8칸, 아래로 8칸을 잘라 다시 칠해야 하는 개수를 구한다.이 때에도 기준점이 B인지 W인지 두 가지 경우의 수를 모두 따져 보아야 한다. 이렇게 작성하긴 했는데... 사실 이 간단한 문제 하나 가지고 1시간 30분을 고민했다...브루트포스 왜이렇게 어렵지?? 모.. 2024. 5. 24. 이전 1 2 3 4 ··· 13 다음 반응형