백준 - 롤러코스터(2873) 본문
얘는 규칙성만 찾으면 그리 어렵진?? 않다.
그 규칙성 찾느라 하루가 걸렸다.
case. 1
홀수 홀수일 경우 그냥 지그재그로 더하면서 내려온다.
case. 2
홀수 짝수일 경우도 지그재그로 더하면서 내려오면 된다.
case. 3
짝수 짝수일 경우가 골치 아프다.
일단 빠져야 할 칸을 찾아야 하는데
하나씩 해보니깐
체스판 형식으로 빠져야 할 애들이 정해져 있었다.
그중에서 가장 값이 작은 애를 빼준다.
그리고 빠진 값의 위치 값을 저장해 두었다가.
그 라인만 피해서 지그재그로 움직여 준다.
빠진 칸의 라인은 적절히 피해 주는 코드를 짜준다.
하나씩 노가다로 통해 얻은 결과이다.
n,m = map(int, input().split())
data = []
for _ in range(n):
data.append(list(map(int, input().split())))
answer = ''
if (n%2)==1 or (m%2) == 1: # 홀수 홀수 or 홀수 짝수
if m > n:
print('R'*(m-1) + ('D' + 'L'*(m-1) + 'D' + 'R'*(m-1))*(n//2))
else:
print('D'*(n-1) + ('R' + 'U'*(n-1) + 'R' + 'D'*(n-1)) *(m//2))
exit(0)
else:
min_y = -1 # 뺴야할 애 찾기??????
min_x = -1
min_data = float('inf')
for i in range(n):
if (i % 2) == 0:
k = 1
else:
k = 0
for j in range(k,m,2):
if min_data > data[i][j]:
min_data = data[i][j]
min_y = i
min_x = j
answer += ('R'*(m-1) + 'D' + 'L'*(m-1)+'D')*(min_y//2)
pattern = list(('DRUR'*(m//2))[:(m*2)-2])
if min_x == 0:
pattern.insert(0, pattern.pop())
else:
pattern.insert((min_x*2)-1, pattern.pop())
answer += ''.join(pattern)+'D'
answer += ('L'*(m-1)+'D'+'R'*(m-1)+'D')*((n//2) - (min_y // 2)-1)
print(answer[:m*n-2])
'알고리즘' 카테고리의 다른 글
백준 - 가장 긴 증가하는 부분 수열5(14003) (0) | 2023.12.12 |
---|---|
백준 - 선분 그룹(2162) (0) | 2023.12.12 |
백준 - 여러분의 다리가 되어 드리겠습니다!(17352) (1) | 2023.12.10 |
백준 - 라면사기(18185) (0) | 2023.12.09 |
백준 - 평범한 배낭(12865) (1) | 2023.11.30 |
Comments