알고리즘/SWEA

[SWEA]230201 문제풀이

stubborngastropod 2023. 2. 1. 19:15
728x90

gravity

T = int(input())

for k in range(T):
    N = int(input())
    nlist = list(map(int, input().split()))
    drop = []
    for i in range(N):
        count = 0
        for j in nlist[i + 1:]:
            if j < nlist[i]:
                count += 1
        drop.append(count)

    print(f'#{k + 1} {max(drop)}')

2차원 배열로 푸는 문젠줄 알았지만 알고보니 1차원 배열로 빠르게 찾아낼 수 있었던 문제. 간단히 생각하는 습관을 가지자

4831. 전기 버스

T = int(input())

for i in range(T):
    K, N, M = map(int, input().split())
    stops = list(map(int, input().split()))
    elec = K
    now = 0
    charge = 0
    dis = []
    for j in range(1, len(stops)):
        dis.append(stops[j] - stops[j - 1])
    if max(dis) > K:
        charge = 0
    else:
        while now < N:
            if elec > 0:
                elec -= 1
                now += 1
            elif elec == 0 and now in stops:
                elec = K
                charge += 1
            else:
                while True:
                    elec += 1
                    now -= 1
                    if now in stops:
                        elec = K
                        charge += 1
                        break
                    else:
                        continue

    print(f'#{i + 1} {charge}')

백준 문제였으면 진작에 틀렸을 파멸의 4중 반복문...

다른 사람들은 코드 길이 절반정도 되던데, 생각해놓은 로직에서 파고들어가다보니 이리 된 것 같다.

View

for i in range(10):
    views = 0
    N = int(input())
    bldg = list(map(int, input().split()))
    for j in range(2, len(bldg)-2):
        side = [bldg[j-2], bldg[j-1], bldg[j+1], bldg[j+2]]
        if bldg[j] > max(side):
            views += bldg[j] - max(side)
    print(f'#{i+1} {views}')

발상이 빠르게 돼서 쉽게쉽게 풀 수 있었다. 다른 문제도 이렇게 쉽게 풀리면 좋을텐데...

Flatten

for i in range(10):
    d = int(input())
    box = list(map(int, input().split()))
    while d > 0:
        M = box.index(max(box))
        m = box.index(min(box))
        box[M] -= 1
        box[m] += 1
        d -= 1
    M = box.index(max(box))
    m = box.index(min(box))
    print(f'#{i+1} {box[M]-box[m]}')

마지막에 인덱스 업데이트 해주는 부분이 좀더 깔끔했으면 하지만 이정도도 만족한다. 일단은 숏코딩보다는 로직에 집중하기로

728x90