[백준] 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.
[프로그래머스] 징검다리 건너기 - JAVA
https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이[2, 4, 5, 3, 2, 1, 4, 2, 5, 1]위과 같은 배열으로 징검다리들의 숫자가 입력으로 들어온다. 디딤돌을 밟을때마다 숫자가 1씩 줄어들고, 0인 돌이 있다면 안뛰고 건너뛸 수 있다. 하지만, 입력으로 k가 주어지는데 한번에 k개의 돌만 건너뛸 수 있다. 예를 들어, `[5, 3, 2, 1, 4]` 이러한 배치를 하고있다면 3명이 돌을 건너간 후의 상태는 `[2, 0, 0, 0, 1..
2024. 5. 19.