알고리즘 778

백준 1253번 좋다 (JAVA)

https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 저는 2중 for문을 통해 풀었습니다. 저는 입력값 + 입력값 = 입력값 (좋은수) 이기 때문에 이를 입력값(좋은수) - 입력값 = 입력값으로 생각했습니다. 그래서 해당 입력값이 있는지를 확인하여 문제를 풀었습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; impor..

알고리즘 2023.12.09

백준 2667번 단지번호붙이기 (JAVA)

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 저는 BFS를 통해 문제를 해결하였습니다. 집이 있는 곳에서 BFS를 통해 해당 구역이 몇개 있는지를 판단하였고, 이들을 모아 정렬하여 문제를 풀었습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; ..

알고리즘 2023.12.08

백준 10162번 전자레인지 (JAVA)

https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 저는 그리디를 통해 문제를 해결하였습니다. 먼저 5분으로 나누고, 1분 , 10초 나누어 떨어지는지를 확인하고 나누어 떨어지지 않으면 -1을 출력, 그렇지 않다면 각각의 몫을 출력하여 문제를 풀었습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_10..

알고리즘 2023.12.07

백준 수들의 합5 (JAVA)

https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 저는 투포인트를 통해 문제를 해결하였습니다. 투포인트로 해당 숫자 사이의 값의 합을 구하고 이 값이 n보다 크다면 시작값을 늘려 합을 줄이고, 작다면 끝 값을 늘려 합을 줄여 문제를 해결하였습니다. package BOJ.twopoint; import java.io.BufferedReader; import java.io.InputStreamReader; import java.u..

알고리즘 2023.12.06

백준 1010번 다리 놓기 (JAVA)

https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 저는 DP와 조합을 이용해 문제를 풀었습니다. 다리가 서로 겹칠 수 없기 때문에 어떤 다리를 선택할지만 고려하면, 순서는 정해지게 됩니다. 그래서 dp를 이용해 중복된 계산을 하지 않도록 하여 문제를 풀었습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Strin..

알고리즘 2023.12.05

백준 11727번 2Xn 타일링 2 (JAVA)

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. DP를 통해 중복되는 계산이 여러번 실행되지 않도록 하여 제한 시간 안에 풀었습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class BOJ_11727 { public static void main(String[] args..

알고리즘 2023.12.04

백준 11559번 Puyo Puyo (JAVA)

https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 저는 구현을 통해 문제를 풀었습니다. 구현을 통해 먼저 모든 곳을 보고 4개가 붙어있는지를 확인하고 그렇다면 뿌수지 않고, 터뜨려야된다고만 표시한다. 그러고 한번에 터뜨리고, 중력 함수를 작성해 모두 내렸습니다. 이후 뿌셔지는 것이 아무것도 없을 때까지 진행하여 문제를 해결하였습니다. package BOJ.simulation; import java.io.BufferedRe..

알고리즘 2023.12.03

백준 15898번 피아의 아틀리에 (JAVA)

https://www.acmicpc.net/problem/15898 15898번: 피아의 아틀리에 ~신비한 대회의 연금술사~ "피아의 아틀리에 ~신비한 대회의 연금술사~"는 가난한 연금술사 피아의 성장스토리를 담은 게임이다. 이 게임의 가장 중요한 부분은 "대회"인데, 연금술로 높은 품질의 물건을 만들어 상금을 타 www.acmicpc.net dfs를 통해 각각의 재료를 모든 위치에 한번씩 넣어보면서 최대 품질을 찾았습니다. package BOJ.simulation; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashMap; import java.util.M..

알고리즘 2023.12.02

백준 9935번 문자열 폭발 (JAVA)

https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 저는 스택을 통해 문제를 해결하였습니다. 스택으로 이전의 문자들을 저장하고, 스택이 폭발 문자열의 길이보다 크다면, 위에서부터 폭발 문자열과 비교하여 같다면 스택에서 전부 빼어 문제를 풀었습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack;..

알고리즘 2023.12.01

백준 1940번 주몽 (JAVA)

https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 저는 투포인트를 통해 문제를 해결하였습니다. 먼저 입력을 정렬하고, 처음과 끝을 포인터로 가리키고, 합이 m과 같다면 처음 포인터를 늘리고 끝 포인트를 줄이고, m보다 작다면 처음 포인터를 늘리고, m보다 크다면 끝 포인트를 줄여 합이 m과 같아지는 것이 몇 쌍인지를 판단하였습니다. package BOJ.twopoint; import java.io.BufferedReade..

알고리즘 2023.11.30