반응형
2월의 내가 풀었던 문제, 프로젝트를 하느라 코테 준비를 잘 못한 10월의 나는 어떻게 풀어나갈까?
1. 문제 출처
2. 설계
- 1차원 배열에 쌓은 블록을 우측 90도로 돌렸을 때 가장 큰 낙상차를 구하는 것
- 세로는 항상 100
- 1차원 배열 좌측에 있을수록 우측으로 회전했을 때 가장 높은 층이 됨
- 우측 회전 후 가장 높은 곳부터 자신보다 같거나 큰 높이의 블록을 세고, 회전한 뒤 자신의 위치에서 낙상차를 제한다.
ㄴ 예를 들어 노란색 블록의 A는 자신보다 높거나 같은 층이 파란 블록 1개이므로 (9-1-1) = 7의 낙상차를 갖는다. -1을 한번 더 해준 이유는 자기 자신이 이미 한자리를 차지하고 있기 때문이다.
- 위 과정을 모든 색 블록에 적용한다.
3. 전체 코드
import java.util.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int test = sc.nextInt();
for(int T=1;T<=test;T++) {
int max_fall = 0;
int width = sc.nextInt();
int[] block = new int[width];
for(int i=0;i<width;i++) {
block[i]=sc.nextInt();
}
//입력 끝
int idx = width-1;
for(int i=0;i<width;i++) {
//블록 하나를 뽑고
int same_h = 0;
for(int j=i+1;j<width;j++) {
//나보다 크거나 같은 블록 있는지 체크
if(block[i]<=block[j]) {
same_h++;
}
}
//낙상차 구하기
max_fall = Math.max(max_fall, idx-same_h);
idx--;
}
System.out.println("#"+T+" "+max_fall);
}//test case end
}
}
과거에는 내가 풀면서도 뭔 소린가 하고 풀었는데,
이제는 명확히 설계하고 풀어나갈 줄 알게된 듯 하다.
반응형
'알고리즘 > SWEA' 카테고리의 다른 글
1979. 어디에 단어가 들어갈 수 있을까 (0) | 2023.10.09 |
---|---|
1208. Flatten [#1차원 배열] (0) | 2023.10.09 |
1206. View [#1차원 배열] (2) | 2023.10.09 |
[부분집합] SWEA 5215번 햄버거 다이어트 - JAVA (0) | 2023.04.06 |
1210. Ladder1 (0) | 2023.02.15 |