집중 안해서 풀었더니 점수 하락...
사실 지난 한 주 동안 한 문제밖에 풀지 않아서 오를 점수도 없긴 하지만,
버스랑 지하철에서 급하게 푸느라 점수가 떨어졌다.
풀었던 문제인데도 집중해서 풀지 못하는 상황에 놓이니 못 풀었다.
지난 한 주 동안 게임도 하고 공부도 하고 놀러다니느라 불성실하게 살았던 것 같다.
다음주는 좀 더 열심히 살아야겠다!
합쳐지는 구슬들
문제 링크: 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)
'Language > Python' 카테고리의 다른 글
[코드트리 챌린지] 5주차 - Backtracking (2) | 2023.10.09 |
---|---|
[코드트리 챌린지] 4주차 - K개 중 하나를 N번 선택하기(Simple) (2) | 2023.10.01 |
[코드트리 챌린지] 3주차 - K개 중 하나를 N번 선택하기(Simple) (0) | 2023.09.21 |
[코드트리 챌린지] 1주차 - 격자 안에서 여러 객체를 이동 (0) | 2023.09.10 |
코딩테스트 문제 풀이 오답 노트 (0) | 2023.07.14 |