코드트리: 거울에 레이저 쏘기2
거울에 레이저를 쏴서 레이저가 몇 번 반사되는지 알아본다.
문제 접근 방법
- 레이저 위치를 토대로 레이저가 발사하는 방향과 처음으로 레이저를 맞는 거울의 위치를 구한다.
- 첫 거울을 시작으로 레이저를 반사하면서 cnt를 증가시킨다.
- 2차원 배열의 크기를 벗어나면 2번을 종료하고, cnt를 증가시킨다.
왜 풀지 못했나?
2차원 배열의 문자( \, / )에 따른 방향 인덱스를 변화하는 로직은 생각했다.
하지만 K를 토대로 시작점과 방향을 구하는 로직을 작성하지 못했다.
회고
문제 접근 방법에서 3번을 생각하지 못해서 아쉽다.
알게된 점
- dx, dy를 사용할 때, 원소의 위치를 문제에 맞게 세팅한다.
- 방향 인덱스를 구할 때 if-else문으로 이용하면 코드가 길어져서 가독성이 떨어진다. 대신 bit 연산을 사용하면 한 줄의 코드로 index를 구할 수 있다.