https://www.acmicpc.net/problem/2818
구현 문제이다.
처음에는, 4개의 행 마다 같은 패턴이 반복된다고 생각했었다.
1번행
2번행
3번행
4번행
1번행
...
하지만 이는 오답이다. 꼭 4행마다 패턴이 반복되는 것은 아니였다.
하지만, 한 행에서 4개 이상의 열이 존재하면, 이는 반복된다.
예를 들어,
1,4,6,3,1,4,6,3,.... 이런 식으로 말이다.
dice=[4,5,1,2,6,3]
dx=[0,0,1]
dy=[1,-1,0] #right, left, down
d=0
answer=0
def roll(d):
if d==0:
dice[0],dice[2],dice[5],dice[4]=dice[4],dice[0],dice[2],dice[5]
elif d==1:
dice[0],dice[2],dice[5],dice[4]=dice[2],dice[5],dice[4],dice[0]
else:
dice[1],dice[2],dice[3],dice[4]=dice[4],dice[1],dice[2],dice[3]
r,c=map(int,input().split())
for i in range(r):
answer+=dice[2]
fullroll=(c-1)//4
answer+=fullroll*(dice[0]+dice[2]+dice[4]+dice[5])
more=(c-1)%4
for i in range(more):
roll(d)
answer+=dice[2]
if d==1:
d=0
else:
d=1
roll(2)
print(answer)
dx,dy를 통해 움직임을, roll 함수를 통해서 방향이 주어질 때 dice의 방향의 움직임을 변경하였다.
fullroll이라는 변수는 만약 한 바퀴, 즉 4칸을 움직였을 때, 총 증가하는 점수이다.
열을 4로 나눈 나머지만큼 더 움직여줘야한다.
이후 다음 행으로 넘어간다.
'Computer Science > Algorithm' 카테고리의 다른 글
[Python 3] LEETCODE 2962. Count Subarrays Where Max Element Appears at Least K Times (2) | 2024.03.29 |
---|---|
[Python 3] BOJ 15989 1,2,3 더하기 4 (1) | 2024.03.27 |
[Python 3] 프로그래머스 Lv. 3 n+1 카드게임 (0) | 2024.03.10 |
[Python 3] BOJ 1256 사전 (1) | 2024.03.08 |
[Python 3] LEETCODE 141. Linked List Cycle (0) | 2024.03.06 |