Cyclically Rotating a Grid

yssgood·2022년 2월 4일
0

LeetCode

목록 보기
19/51

오랜만에 올리는 코딩 문제인거같다. 군대에서 스트레스가 이만저만이 아니다보니 문제에 집중이 잘 안되는기분이여서 몇일동안 눈팅으로만 계속 보다가 드디어 올려본다. 휴가를 나가고싶은데 코로나도 많이 심해져서 고민이 많은 요즘이지만 이 기회를 이용해서 더 많이 배워보고싶다.

순열과 조합 관련 문제들을 많이 풀다가 도형이랑 시뮬레이션 같은 구현 문제가 더 인상깊게 보여가지고 집중해서 풀고있고 이 문제도 관련된 문제이다. 구현 문제같은경우는 문제에 나와있는 그대로 풀면 되는 문제인데 머리가 자꾸 하얘져서 하나씩 천천히 읽는게 중요한거같다. 이 문제는 matrix 가 주어졌을때 k만큼의 숫자로 각각의 "레이어" 를 역시계 방향으로 회전시켜주면 되는 문제다.

x방향으로 matrix 옮기기류의 문제는 이전에도 풀어본 유형이지만 사실 약간 어거지? 로 푼듯한 느낌이 강했고 깔끔하다는 느낌도 받지 못한채로 찜찜했던적이 많았어서 가장 많은 투표를 받은 베스트 풀이를 참고했고 이런식으로 풀면 되겠다 하고 배웠다.

내 기준 정말 참신한 접근법이었다. 각 해당 레이어에 있는 숫자를 계산하는 방법인 2(bottom-left) + 2(right-left) 방식도 색다로웠고 k만큼 로테이션을 할때 쓸데없는 로테이션 횟수를 줄이기 위한 k % total_layer 방식도 신기했다.

이 전에 풀었던 spiral matrix 방식과 비슷한 while 룹으로 시작했고 k만큼의 로테이션을 위한 while 룹을 써줬고 left,top,right,bottom 비슷한 방식을 썼다. 그런데 여기서 맘에 들었던거는 이전에는 left <= right 형식으로 써줬는데 이제는 left < right 형식으로 쓰니깐 코드를 읽는데 있어서 가독성이 더 좋았다. 처음에 저장해둔 tmp같은경우 로테이션이 유일하게 안되는 구간을 저장한거니 당황하지않고 마지막에 제대로 적용해줬다. 룹이 끝난후에는 top left bottom right 을 조정해줬다.

배운점:
1. 시뮬레이션 문제는 머리속에서 계속 따라가는게 중요하다
2. 여기서 나온 formula는 참고 하자

profile
성장하는 사람

0개의 댓글