분류 전체보기 795

백준 1654번 랜선 자르기 (JAVA)

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 저는 이분탐색으로 문제를 풀었습니다. 시간복잡도가 n*k이 되면 시간안에 안 돌아가기 때문에 이분탐색으로 시간복잡도 n*log(k)로1초 안에 진행되도록 하였습니다. package BOJ.binarysearch; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.String..

알고리즘 2023.12.11

백준 1914번 하노이 탑 (JAVA)

https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 저는 재귀를 통해 문제를 풀었습니다. 시작 가운데 목표 지점을 1,2,3이라 할 때 1에서 먼저 맨 밑에 제외하고 나머지는 2에 놓고, 맨 밑을 3에 넣고 2에 놓은 것을 3에 넣어야합니다. 이를 재귀적으로 풀어 문제를 풀었고, 20 이상인 경우에는 공식을 통해 문제를 풀어 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import ja..

알고리즘 2023.12.10

백준 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