집중 안해서 풀었더니 점수 하락...

사실 지난 한 주 동안 한 문제밖에 풀지 않아서 오를 점수도 없긴 하지만,

버스랑 지하철에서 급하게 푸느라 점수가 떨어졌다.

풀었던 문제인데도 집중해서 풀지 못하는 상황에 놓이니 못 풀었다.

지난 한 주 동안 게임도 하고 공부도 하고 놀러다니느라 불성실하게 살았던 것 같다.

다음주는 좀 더 열심히 살아야겠다! 

 

합쳐지는 구슬들 

문제 링크: https://www.codetree.ai/missions/2/problems/merge-marbles?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

이 문제는 33분 48초만에 쉽게 푼 문제다.

보통 난이도라 그렇기도 하고 해당 유형의 공부를 많이 해서 잘 풀렸다.

아래는 내가 작성한 테스트케이스가 모두 통과된 코드이다.

n, m, t = map(int, input().split())
grid = [
    [[] for _ in range(n)]
    for _ in range(n)
]
for num in range(1, m + 1):
    r, c, d, w = input().split()
    i, j, w = int(r) - 1, int(c) - 1, int(w)
    grid[i][j] = [num, d, w]


def in_range(i, j):
    return i >= 0 and i < n and j >= 0 and j < n


dtoN = {'U': 0, 'D': 1, 'L': 2, 'R': 3}
dis, djs = [-1, 1, 0, 0], [0, 0, -1, 1]
for _ in range(t):
    tmp_grid = [
        [[] for _ in range(n)]
        for _ in range(n)
    ]
    for i in range(n):
        for j in range(n):
            if grid[i][j] != []:
                dNum = dtoN[grid[i][j][1]]
                new_i, new_j = i + dis[dNum], j + djs[dNum]
                if not in_range(new_i, new_j):
                    d = grid[i][j][1]
                    if d == "L":
                        d = "R"
                    elif d == "R":
                        d = "L"
                    elif d == "U":
                        d = "D"
                    else:
                        d = "U"
                    grid[i][j][1] = d
                    new_i, new_j = i, j
                # 충돌 처리
                if tmp_grid[new_i][new_j] != []:  # 충돌하면
                    grid[i][j][2] += tmp_grid[new_i][new_j][2]
                    if grid[i][j][0] < tmp_grid[new_i][new_j][0]:
                        grid[i][j][0] = tmp_grid[new_i][new_j][0]
                        grid[i][j][1] = tmp_grid[new_i][new_j][1]
                # 임시 격자에 저장
                tmp_grid[new_i][new_j] = grid[i][j]
    grid = tmp_grid

cnt = 0
max_w = 1
for i in range(n):
    for j in range(n):
        if grid[i][j] != []:
            cnt += 1
            if grid[i][j][2] > max_w:
                max_w = grid[i][j][2]

print(cnt, max_w)

 

+ Recent posts