알고리즘/programmers

[Programmers] 빛의 경로 사이클

꾸준함. 2021. 10. 9. 00:54

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/86052

 

코딩테스트 연습 - 빛의 경로 사이클

각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진

programmers.co.kr

visited 배열을 y, x, 그리고 방향까지 3차원으로 정의해주는 것이 핵심인 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. 가로길이를 벡터의 크기, 세로 길이를 문자열의 길이, 그리고 방향은 상하좌우 4로 선언해줍니다.

2. 1번처럼 설정해준 다음에는 모든 방향에 대해 BFS를 진행해주면 되는 문제였습니다.

2.1 각각의 노드를 어느 방향에서 통과하는지 설정이 안 되어있으므로 4가지 방향 모두 체크해줘야 하며

2.2 좌표는 0 이상이므로 모듈러 연산을 통해 적절히 다음 좌표를 지정해줘야 합니다. (getCycleLength 메서드 참고)

3. 2번을 통해 구한 사이클의 길이들을 벡터에 넣고 오름차순 정렬을 한 뒤 반환해줍니다.

 

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형