백준 17406 배열돌리기

Yongsang Yoon·2022년 1월 26일
0

코딩테스트

목록 보기
6/6
for op in ops[:1]:
    r,c,s = op
    print('op', op)
    r -= 1
    c -= 1
    for i in range(1, s+1):

        left_top = board[r-s][c-s] # 1-1, 1+1 = 0,2
        right_top = board[r-s][c+s]
        left_bottom = board[r+s][c-s]
        right_bottom = board[r+s][c+s]
        
        board[r+s][c-s:c+s] = board[r+s][c-s+1:c+s+1]
        # print(np.array(board))
        board[r-s][c-s+1:c+s+1] = board[r-s][c-s:c+s]
        # print(np.array(board))
        
        for y in range(r-s, r+s):
            board[y+1][r+s] = board[y][r+s]
            board[y][r-s] = board[y+1][r-s]

        board[r][c+s] = right_top
        board[r+s][c] = right_bottom
        board[r][c-s] = left_bottom

            
print(np.array(board))

어딘가 이상하다...

Code Fail 1

for y in range(r-s, r+s):
	board[y+1][c+s] = board[y][c+s]

이렇게 할당하면 실패한다. 예를 들어 [1,2,3,4]를 위처럼 shift하면 아래처럼된다..

1234 -> 1134 -> 1114 -> 1111 

때문에 반복문도 역순으로 돌아야한다. 일반 리스트처럼 마지막번호는 포함하지않으며, (큰수,작은수-1)로 적어야한다.

for y in range(8,2,-1):
	print(y)
    
[8, 7, 6, 5, 4, 3]
profile
I'm a student

0개의 댓글