728x90
728x90
[백준 1167번 Java] 트리의 지름 - DFS
코딩테스트/백준2024. 6. 11. 18:00[백준 1167번 Java] 트리의 지름 - DFS

문제 난이도GOLD II (문제 링크)   풀이두 노드 간의 최장 경로인 트리의 지름을 구하는 문제이다. 모든 경우의 수를 구해서, 가장 큰 값을 찾아야하기 때문에 DFS에 적합하다. DFS 구현은 단순하니 이를 통해 문제를 쉽게 해결할 수 있다.//dfs 호출부int max = 0;for (int i = 1; i     메모리 초과는 단순 이차원 배열을 통해 각 노드의 경우의 수를 계산했기 때문에 발생했다.이는 리스트로 구현하여 해결하였다.  하지만, 모든 경우의 수를 구하면 시간 초과가 발생하는데, 모든 경우의 수를 구하게 되면 O(V^2)이 되며, 문제 조건에서 V가 100,000까지이기 때문에 최적화할 수 있는 방법이 필요하다. 임의의 노드 x에서 최장 경로 노드를 DFS를 통해 구했고, 이를 y..

[백준 1043번 / Java] 거짓말
코딩테스트/백준2023. 7. 21. 06:28[백준 1043번 / Java] 거짓말

문제 링크 Gold 4 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 첫 풀이 크게 시간, 메모리 고려를 하지 않아도 될 것 같아보여서 뇌를 빼고 풀어보려고 했다. (사실 Union Find에 자신이..) 단순 String배열을 활용하고, List에 String배열을 저장하여 정답을 도출하려고 했고, 문제에서 제공하는 테스트케이스를 만족해서 됐다!!! 라고 생각했다. import java.io.BufferedReader; import java.io.IO..

[백준 10026번 / Java] 적록색약 - DFS/BFS
코딩테스트/백준2023. 7. 20. 05:12[백준 10026번 / Java] 적록색약 - DFS/BFS

문제 링크 Gold 5 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 필자는 BFS를 이용해 풀었으며 실버 DP문제들 보다 난이도가 쉬운 것 같다. 처음에는, BFS 메서드를 통해 한 번 완전탐색을 끝낸 후 바로 결과를 도출시키려고 했고, 실패했다. 이유는 모든 결과를 고려하지 않아서 인 것 같다. 어떤 경우였냐면 //bfs메서드의 파라미터로 color을 받아 RGBCheck배열 체크 switch(color) { case 'R':..

[백준 1697번 / Java] 숨바꼭질 - BFS
코딩테스트/백준2023. 7. 7. 20:36[백준 1697번 / Java] 숨바꼭질 - BFS

문제 링크 Silver 1 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 단순 BFS 구현 문제로 너비를 +1, -1, *2의 경우로 두었고 문제 조건에 알맞게 예외상황에 대한 처리를 하면 되는데 N == K일 때의 상황을 고려하지 않아서 20분동안 삽질했다.. 꼼꼼하게 보고 놓치지 말자.. import java.io.BufferedReader; import java.io.IOException; import j..

[백준 14500 / Java] 테트로미노 - DFS
코딩테스트/백준2023. 7. 6. 01:35[백준 14500 / Java] 테트로미노 - DFS

난이도Gold 4 문제 링크https://www.acmicpc.net/problem/14500 14500번: 테트로미노폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변www.acmicpc.net 풀이DFS로 풀이하였으며 'ㅗ' 모양을 단순 DFS로 구현할 수 없어서 따로 메서드화 했지만 DFS 내부에서 cnt = 3일 때 조건을 주어 처리할 수도 있다. 원하는 방식대로 풀면 된다. 메서드 이름이 마땅히 생각나지않아 fuck로 지었...import java.io.BufferedReader; import java.io.IOException; import java.io...

[백준 9019번 / Java] DSLR - BFS
코딩테스트/백준2023. 7. 5. 12:24[백준 9019번 / Java] DSLR - BFS

문제 링크 https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 풀이 엄청난 삽질을 했던 문제 한번에 풀겠거니 했는데 처음에는 메모리 초과가 발생했는데, 이유는 아마 String 배열 하나로 풀었기 때문인 것 같다. 어떻게 boolean 배열 없이 단순 String 배열로만 풀어보자 하고 고집하다가 계속 오답을 발생시켰다. 추가로, l과 r을 계산하는 조건을 구할 때, 처음에 String으로 받아서 charAt로 풀었기 때문에 메모리가 ..

[백준 7576번 / Java] 토마토 - BFS
코딩테스트/백준2023. 7. 5. 06:00[백준 7576번 / Java] 토마토 - BFS

문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 BFS를 이용한 단순한 풀이였지만, 정답을 맞춘 뒤 맘에 들지않는 부분을 수정하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java..

[백준 1107번 / Java] 리모컨 - Brute Force(DFS)
코딩테스트/백준2023. 7. 4. 00:50[백준 1107번 / Java] 리모컨 - Brute Force(DFS)

문제 링크 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 1. 500,000까지의 채널이 존재했고, 가장 큰 경우가 999,999의 경우를 고려하여 반복문의 최대 길이를 설정 2. answer는 단순 +,-로 해당 채널로 이동하는 경우, 버튼을 눌리는 횟수 3. length는 해당 버튼의 길이. 즉 해당 채널로 이동하기 위한 버튼을 눌리는 횟수 4. 모든 경우의 수에서 최소값을 구함 import java.io.Buffer..

728x90
728x90
image