본문 바로가기

백준8

[백준 Gold 4] 21923 곡예 비행 - Java 문제링크 : https://www.acmicpc.net/problem/21923 21923번: 곡예 비행 동헌이는 모형 비행기 조종 대회에 참가하였다. 이 대회에서는 격자 모양의 공간에서 모형 비행기를 조종하여 얻는 비행 점수로 순위를 매긴다. 격자의 각 칸에는 점수가 부여되어 있고, 비행 www.acmicpc.net 접근 과정 : 상승 비행과 하강 비행을 따로 관리 (상승 구간과 하강 구간이 중복되는 칸이 1~N개 있다!!!) 상승 비행이 끝나는 칸 == 하강 비행이 시작하는 칸 비행 점수 = (r,c)까지 상승한 경우 + (r,c)부터 하강하는 경우 DP로 하강 비행을 탐색하고 하강 비행 탐색 로직 내부에서 상승 비행 탐색을 수행 하강비행 = (r,c)까지 상승비행 + (r,c)부터 하강비행 OR (.. 2021. 12. 16.
[백준 Gold 4] 14499 주사위 굴리기 - Java 문제 링크 : https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 문제 이해 : 지도 위에서, 주사위를 공처럼 굴리는 것을 상상 한 칸 굴렸을 때, 밑면의 숫자는 변하고, 윗면은 출력 주사위가 굴러갈 때, 어떻게 변하는 지 확인!! 접근 과정 : 굴러가는 방향에 따라, 주사위의 변화를 확인했고 이를 어떻게 반영할지 고민!! 첫번째 아이디어 주사위를 한 칸 굴리면 방향에 따라 한 칸씩.. 2021. 12. 16.
[백준 Silver 2] 11722 가장 긴 감소하는 부분 수열 - Java 문제링크 : https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 접근 과정 : 수열 A를 모두 입력 받은 후에, 감소 수열 체크 dp[] 는 해당 인덱스까지의 확인했을 때, 가장 긴 감소 수열의 크기를 의미 수열 A를 순회하면서, 해당 인덱스(i) 앞 부분의 수(j)를 모두 체크 만약 앞 부분의 dp[j]가 현재 인덱스의 dp[i]보다 작지 않고, A[j] 가 A[i] 보다.. 2021. 12. 16.
[백준 Silver 1] 2583 영역구하기 - Java 문제링크 : https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 접근 과정 : 모눈종이를 표현하는 boolean[][] map 배열 생성 입력되는 직사각형에 따라서, 해당 직사각형에 포함되는 영역을 map에 체크 모든 직사각형의 입력이 끝난 후, 모눈 종이를 순회하면서 직사각형이 아닌 영역의 개수 파악. 직사각형이 아닌 부분이 나오면, 해당 칸을 기준으로 DFS하여, 칸의 개수를 파악 영역의 칸의 개수는 List에 담고, 이를 .. 2021. 12. 16.