[백준] 1744: 수 묶기 - JAVA
https://www.acmicpc.net/problem/1744 풀이길이 n의 수열이 주어지고, 이 수열의 합을 구하는 문제이다. 수열내의 두 수를 묶어 그 수들을 곱하는 것으로 계산 할 수 있다. `{-1, 2, 1, 3}` 과 같은 수열이 있다면, 2와 3을 묶어 6으로 만들고, `-1 + 1 + 6 = 6` 으로 6이 최대값이 된다. 음수는 같은 음수끼리 곱하거나, 0과 곱할 때 합에서 이득을 볼 수 있으므로 0이하인 것들은 minus 리스트에 담고, 0보다 큰 수들은 plus 리스트에 담았다. 두 리스트를 정렬해서 minus에 있는 것들은 작은 순으로 2개씩 묶고, plus에 있는 수들은 큰 순으로 2개씩 묶었다. 다만, 1의 경우는 `{1, 1}` 의 수열에서 볼 때, `1 + 1` 이 `1 ..
2024. 5. 19.
[백준] 16724: 피리 부는 사나이 - JAVA
https://www.acmicpc.net/problem/16724 풀이N * M 지도에 U, D, L, R이 주어진다. 각 칸에서 어느 방향으로 한 칸 이동할 수 있는지를 나타낸다. 각 칸에서 이동시키기 편하게 하기 위해 U, D, L, R을 0, 1, 2, 3으로 치환하여 저장했다. 방문처리가 안된 칸에서부터 dfs를 시작하여 이동할 수 있는 칸을 지날때 union메서드를 통해 같은 그룹으로 묶어주었다. 최종적으로 그룹의 수를 구하면 답이 된다. 메모리: 72688KB시간: 560ms언어: Java 11import java.io.*;import java.util.*;public class Main { static int[][] vector = { { -1, 0 }, { 1, 0 }, { 0, ..
2024. 5. 19.