상자들이 쌓여있는 방이 있다. 방이 오른쪽으로 90도 회전하여 상자들이 중력의 영향을 받아 낙하한다고 할 때, 낙차가 가장 큰 상자를 구하여 그 낙차를 리턴 하는 프로그램을 작성하시오.
§ 중력은 회전이 완료된 후 적용된다.
§ 상자들은 모두 한쪽 벽면에 붙여진 상태로 쌓여 2차원의 형태를 이루며 벽에서 떨어져서 쌓인 상자는 없다.
§ 방의 가로길이는 항상 100이며, 세로 길이도 항상 100이다.
§ 즉, 상자는 최소 0, 최대 100 높이로 쌓을 수 있다.
대략 가장 큰 낙차를 구하라 이말이다.
알고리즘 처음 배우고 처음 본 문제라 진짜 도대체 저걸 어떻게 풀어,, 라고 생각했다.
나중에 보니 생각보다 아주 간단한 문제였다.
중력은 헷갈리게 하려고 넣었구나!
중력이 문제가 아니라
해당 박스와 그 박스보다 같거나 큰 박스까지와의 거리를 구하는 문제이다.
for tc in range(1, int(input())+1):
N = int(input())
TC = list(map(int, input().split()))
max_value = 0
for i in range(N):
cnt = 0
for j in range(i+1, N):
if TC[i] > TC[j]:
cnt += 1
if cnt > max_value:
max_value = cnt
print(f'#{tc} {max_value}')
근 5일 동안 나는 알고리즘 똥멍청인가 하고
매우 절망했지만
역시 나는 똑똑했따 😎ㅋ