행렬 테두리 회전하기

유승선 ·2022년 2월 4일
0

프로그래머스

목록 보기
11/48



(컴퓨터 모니터가 작아서 문제 캡쳐 이렇게 밖에 못해서 king받는다..)

오늘도 시뮬레이션 위주의 matrix 구현 문제를 한번 풀어보았다. 참 신기한게 leetcode 에서 풀어본 문제의 유형은 항상 카카오든 어디든 비슷하게 나오는거같다. 물론 문제가 요구하는건 천지차이지만 그래도 리트코드가 얼마나 베이스를 탄탄하게 하는 연습장소인지 이해가 가는 부분이다. 이 문제는 queries라는 벡터에 주어지는 꼭지점을 기준으로 행렬 태두리를 회전하면 되는 문제이고 각 테두리에서 가장 작은 숫자를 answer 벡터에 넣어서 리턴하면 되는 요구사항이 조금은 이상한 문제이다. 이 전에 풀었던 cyclically rotating a grid 같은경우는 역시계 방향으로 돌리는거였는데 이 문제는 시계방향 으로 로테이션을 하는 문제이다. 시계방향과 역시계 방향의 차이점이 나를 매우 헷갈리게 했는데 이제야 꺠달은거는 가장 첫번째 숫자가 바뀌는 방향으로 for 룹을 돌리면 간단하게 끝날수있는 문제였다.

이 문제는 2021 Dev-Matching 에서 나온 문제로 이 전에도 내가 풀어본적이 있는 문제이다. 테스트케이스는 모두 성공했지만 솔직히 코드가 너무 더러웠다. 그때는 가는 방향을 다 함수로 지정해두고 int를 리턴하고 너무 시간소모가 컸어서 굉장히 찝찝했던 문제였는데. 저번에 풀었던 cyclically rotating a grid 문제를 기반으로 새롭게 코드를 썼고 굉장히 만족한다.


전에 풀었던 방식과 마찬가지로 로테이션이 안되는 한 구간을 tmp로 지정해두고 top bottom left right 변수에 queries 에 나오는 꼭지점들을 저장한후에 돌렸다. k만큼의 로테이션으로 돌리는 등 추가적인 제한사항은 없이 한번만 돌리면 되므로 for 룹을 4번써서 깔끔하게 회전시키고 minimum 같은경우 cnt라는 변수를 이용해서 잘 업데이트 해줬다.

배운점:
1. 시뮬레이션 문제는 풀수록 늘어가는거같다.
2. left right bottom top 을 업데이트 해줄때는 특히 더 조심해야겠다.

profile
성장하는 사람

0개의 댓글