시뮬레이션/구현 문제를 풀다보면 조건이 많이 있어 굉장히 구현이 짜증난 경우를 많이 마주친다.

예를 들면, 배열의 회전 구현.

잘 보면, 시계/반시계 방향으로 shift만 해주면 될 것 같은데, 막상 구현은 힘든 경우가 많다.

 

이 경우, 회전시켜야 할 칸의 pos만 따서 index table 만든 뒤,
각 pos에 해당하는 값만 따와서 큐에 넣고 회전시킨 뒤, 다시 각 pos에 회전된 값을 업데이트 해주면 간-단

 

아래 공기 청정기 예시에 딱 들어맞는다.

BOJ 17144 - 미세먼지 안녕! 공기 청정기 바람 방향 구현 방법

 

또 다른 예시로는 '큐빙' 문제가 있다.

정육면체 큐브의 각 면의 시계/반시계 회전을 구현해야 하는데, index table 방식을 사용하면 뚝딱

BOJ 5373 - 큐빙 에서의 큐브 회전 구현; 출처 :  sangdo913.tistory.com/185

 

아래 글도 읽어봄직 하다.
코드와 데이터를 분리하는 방법 (테이블 만들기)

sangdo913.tistory.com/187

 

[알고리즘 깨알 팁] 코드와 데이터를 분리하자 (테이블 만들기)

종만북에 나오는 명언이 하나 있습니다. '코드와 데이터를 분리하라.' 저는 코드와 데이터를 분리하는 기준을 다음과 같이 두고 있습니다. 코드 : 무언가를 하는 반복적인 행위. 데이터 : 반복적

sangdo913.tistory.com

 

'코드와 데이터를 분리하라.'

코드 : 무언가를 하는 반복적인 행위.
데이터 : 반복적인 행위를 하기 위한 데이터의 집합. 반복적인 행위가 이 데이터에 따라서 다른 결과를 도출함.

종만북에서도 데이터를 배열로 선언(테이블로 만듦)해서 배열을 순회하며 처리하라고 되어있습니다!
유사한 if와 else가 반복적으로 나타난다면, 배열로 테이블을 만들어서 간단하게 표현하는 방법을 찾아보시기 바랍니다!

내 경우에는, 코드는 '회전', 데이터는 '회전시켜야 할 각 칸'

+ Recent posts