코딩테스트/그외(소프티어 등)

현대 소프티어 [인증평가(1차) 기출] 로봇이 지나간 경로 풀이/코드 (파이썬)

RyanKwon 2021. 9. 22. 16:35
728x90

코드만 궁금하신 분은 링크

GitHub - Rhyankwon/algorithms

Contribute to Rhyankwon/algorithms development by creating an account on GitHub.

github.com

일단 문제 해설 ㄱ

간단하게 얘기하면, 로봇이 갈 수 있는 경로가 있는데 그 경로는 #으로 표시돼있다. 시작지점은 어디든 상관없음. 시작이 끝이 되고 끝이 시작이 될 수 있으니깐 어차피. 이 때 로봇이 왼쪽으로 회전하면 L, 오른쪽으로 회전하면R, 직진시 A 이렇게 기호를 사용해서 시작부터 끝까지 로봇이 이동할 때의 로봇의 조작신호?를 누적해서 출력하면 된다. 총 3개를 출력해야하는데 이게 메인이었던거같다. 푼지가 한달..이 훌쩍 넘은 문제라 잘 기억이 안남;;

내가 푼 방식은 이렇다.

1. 시작 위치 찾기. -> #이 있는 곳을 찾는데, 이 상하좌우 격자에 #이 두개 있으면 이 말은 해당 지점은 그냥 경로 사이라는 뜻임. 시작지점이 되려면 근처 경로가 단방향으로만 나있어야 함. 그걸 활용해서 시작지점 찾고,

2. 시작지점을 찾으면 그 옆에 경로가 어딘지 확인해서 > ^ v <중에 어디 방향인지 저장. 이걸 저장하는게 굉장히 중요하다. 답으로 출력해야 하는 요소 중 하나라서

3. 아까 저장한 방향을 보고 이동하고 이전 지점은 .으로 표지한다.

4. #의 위치를 탐색하여 다시 > ^ v <중 어느 방향으로 가야하는지를 저장한다.

5. 계속 반복하다가 모든 #를 지나면 탐색은 끝.

6. 아까 저장해둔 방향들이 있는데, 시작은 무조건 직진이기 때문에 A를 먼저 추가하고 그 다음 방향 전환에 따라 (가령 ^> 인지 ^<인지 혹은 <^인지 <v)를 모두 확인해서 L, R을 판단해 끝까지 추가한 후 답을 리턴한다.

나는 이 문제는 if문을 너무 점철해서 좀 더럽게 풀었다고는 생각하긴 하지만 그냥 더러운 구현문제?같아서.. 잘 풀었다고 생각한다. 내가 처음에 조금 실수한건, 회전 후 직진을 해야하는걸 까먹었다는 점 정도? LRRL 이런식으로 하면 안되고 L이나 R은 반드시 LA, RA와 같이 A와 같이 와야한다.

문제없이 잘 풀림.

소프티어가 문제 퀄리티는 정말 좋은거같은데 다른 사람 풀어둔게 없어서 내가 못 풀때 너무..공부가 안된다. 이건 운좋게(운좋게 라는 표현을 쓸 수 밖에없다) 맞았지만 1차 인증평가 2번, 2차 인증평가 1,2번 이렇게 세개는 아직 풀지를 못했다. 1차 인증평가 2번은 다 풀었고 예제도 맞는데 안되서 뭐가 틀렸는지 알 수가 없고, 2차 인증평가 사물인식문제는 거의 맞았는데 효율성 평가에서 5개가 자꾸 틀려서.. 수정중이다. 이건 곧 될듯? 2차에서 garage game은 도무지 감이안와서..냅둔상태. dfs로 푸는게 맞는거같은데 흠..

728x90