코딩 좆같아서 걍 내 풀이법 뿌림. 혹시 이거 보고 풀면 나한테 피자 한판 쏴라.

방의 최외각 거울부터 반사된 방과 원래 방의 같은 유리가 겹치도록 방 연속해서 붙여넣어가면서
원래 방과 반사된 방의 X 사이 거리가 d가 넘을 때까지 반사된 방의 X와 원래 방의 X 사이를 잇는 직선에 반사된 방과 원래 방이 겹치는 유리만 통과하는 것만 카운트하면 됨

그리고 앞의 방들에서 반사한 방향과 반대인건 반사 안 시켜봐도 됨.
그리고 유리 겹칠 때 원래 방으로 삐져나오는 반사된 방의 유리는 붙여넣으면 안됨.

다시 바로 앞방 상태로 되돌릴 때는 곂치는 유리 너머 반사된 방 쪽으로  깡그리 지우면됨.



ex)
.으로 찍으면 블록 길이 안맞아서 *로 표기함
반사된 방과 겹친 거울은 1, 이미 앞에서 반사 다 시켜보고 되돌아와서 벽으로 쓰는건 2

3, 4, 6
####
#X*#
####

=>

###1###
#X*1*X#
###1###
사이 거리 3이고 사이에 1밖에 없으니 카운트 +1

###1##1###
#X*1*X 1X*#
###1##1###
사이 거리는 5이지만
이미 센 X와 충돌하므로 언카운트


###1##1##1###
#X*1*X 1X*1*X#
###1##1##1###
사이 거리 오버
되돌아감.

###1##1##2
#X*1*X 1X*2
###1##1##2
한칸 안쪽 벽을 뒤짐
위쪽벽이 먼저 감지됨

*******####
*******#X.#
###1##11 11
#X*1*X 1X*2
###1##1##2
사이 거리 오버
벽과도 충돌함.
되돌아감

###1##2222
#X*1*X 1X*2
###1##1##2
안쪽 벽을 마져 뒤짐
아랫벽이 먼저 감지됨

###1##2222
#X*1*X 1X*2
###1##11 11
*******#X.#
*******####
위쪽과 마찬가지로 벽과 충돌+사이거리 오버
되돌아감

###1##2222
#X*1*X 1X*2
###1##2222
더 이상 탐지되는 벽이 없음.
되돌아감

###1##2
#X*1*X 2
###1##2
위쪽이 감지됨.

*** ####
*** #*X#
###11 11
#X*1*X 2
###1##2
벽과 충돌
안쪽벽을 뒤짐
위쪽벽이 감지

위쪽 안될거 뻔하니 중략


*** 2221###
*** #*X1X*#
###11 11###
#X*1*X 2
###1##2

사이거리가 6이하이고 벽에 충돌하지 않음.
카운트+1

이하 생략


ㅅㅂ 누가 코드로 좀 만들어봐라. 짜증나서 못짜겠어.