목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
-문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net -자바 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class tomato { int x; int ..
-문제 https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net -문제풀이 더 좋은 풀이가 있지만 나는 기본에 충실한다는 생각으로 기본적인 BFS풀이로 풀었다. 1. sea[][] 2차원 배열에 입력값들을 입력받는다. 2. 이중 for문 안에서 BFS() 메서드를 호출한다. 이때 BFS() 메서드의 반환값은 가장 가까운 상어가 있는 공간까지의 거리를 반환해준다. 3. BFS() 메서드의 반환값을 tmp라는 변수에 저장하고 현..
https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net -문제풀이 이런 숫자의 배수나 약수 등등처럼 수학관련된 문제는 일단 직접 써보면서 규칙을 찾는 것이 중요하다. 30의 배수를 작성해보면 다음과 같다. 30 60 90 120 150 180 210 240 270 300 ... 규칙을 살펴보면 다음과 같다. 1. 뒤에 0이 붙는다. 2. 각 자릿수를 모두 더하면 3의 배수이다. => 3으로 나누었을 때 나머지가 모두 0 따라서 이 두 가지 규칙을 구현해..
-문제풀이 오래만에 dp문제를 풀었는데 다 까먹었었다.. 암튼 순서는 다음과 같다. 1. 90도 돌릴 수 있으니 입력되는 가로, 세로 길이 중 가장 긴 길이를 가로에 둔다. 7, 8 -> 8, 7로 정렬해서 저장한다. 2. 각 색종이마다 위에 올릴 수 있는 색종이의 값을 dp 배열에 저장한다. 3. dp배열의 값과 max값을 비교해서 가장 큰 수가 있을 경우 max값을 갱신해준다. -자바 package sort; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import..