[SWEA] GRAVITY [PYTHON]

냐항·2021년 8월 14일
0

상자들이 쌓여있는 방이 있다. 방이 오른쪽으로 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일 동안 나는 알고리즘 똥멍청인가 하고
매우 절망했지만
역시 나는 똑똑했따 😎ㅋ

0개의 댓글