문제
https://www.acmicpc.net/problem/14891
풀이
python3
def checkLeft(gearNum, dir, gearList):
if gearNum <= 0 or gearList[gearNum][6] == gearList[gearNum - 1][2]:
return
checkLeft(gearNum - 1, -dir, gearList)
gearList[gearNum-1] = rotate(gearList[gearNum-1], dir)
def checkRight(gearNum, dir, gearList):
if gearNum >= 3 or gearList[gearNum][2] == gearList[gearNum + 1][6]:
return
checkRight(gearNum + 1, -dir, gearList)
gearList[gearNum+1] = rotate(gearList[gearNum+1], dir)
def rotate(r_list, dir):
return r_list[-dir:] + r_list[:-dir]
if __name__ == "__main__":
gearList = list()
for i in range(4):
row = list(map(str, input().split()))
gearList.append(list(row[0]))
n = int(input())
for i in range(n):
gearNum, dir = map(int, input().split())
checkLeft(gearNum - 1, -dir, gearList)
checkRight(gearNum - 1, -dir, gearList)
gearList[gearNum - 1] = rotate(gearList[gearNum - 1], dir)
result = 0
for i in range(4):
result += (2**i) * int(gearList[i][0])
print(result)
아쉬웠던점
처음 gearList 인서트 받는 부분에서, int 로 받으면 00000010의 경우 10만 인서트되는 이슈가 있었다.
GearNum은 1,2,3,4 이지만, GearList의 인덱스는 0부터 시작하는 부분을 간과해서 어려웠다.
rotate 부분을 구현하는 방법에 대해서 생각했다...
'algorithm > exercise' 카테고리의 다른 글
[BOJ 2638] 백준 2638 치즈 (0) | 2021.08.28 |
---|---|
[BOJ 6593] 백준 6593 상범 빌딩 (0) | 2021.08.28 |
[BOJ 1937] 백준 1937 욕심쟁이 판다 (0) | 2021.08.19 |
[BOJ 2650] 백준 2650 색종이 만들기 (0) | 2021.07.30 |
[programmers] 기능개발 with JAVA (0) | 2021.07.29 |