구현, 시뮬레이션 문제이다. 문제에 적힌 그대로 구현하면 풀리지만, 코드로 옮기는 과정에서 한두개의 실수조차 범하지 않기는 어렵다. 복잡한 로직은 필요 없이 문제를 아주 세심히 읽고 오차 없이 완벽하게 구현해내면 된다. 물론 난 제대로 안읽어서 고생했다.
구현해 놓고 보면 간단하다. 그냥 문제 지문 자체가 정답이니까.
헷갈렸던 부분을 살펴보자면
1. 첫 번째 위치 청소 체크 안 한것
2. 후진 시 방향 변경하면 안되는데 한것
3. 반시계 방향이라고 해 놓고 문제 입력값 0, 1, 2, 3은 시계 방향으로 주어진 것
4. 반시계 방향전환 로직 그 자체
이 정도다. 특히 이 중에서 4번이 매우 헷갈렸다.
시뮬레이션 문제를 많이 안 풀어보기도 했고 어떻게 해야 반시계 방향으로 쉽게 전환을 할 수 있지.. 머리를 싸매고 특이하게 구현했었는데 자꾸 틀려서 방향 변경 로직만 다른 코드를 참고했다.
처음엔 이렇게 구현해서 directions[num % 4] + 2 % len(dx) 뭐 막 이런 식으로 복잡하게 했었는데 내가 봐도 헷갈리고 이상하게 테스트 케이스에서 오차가 조금씩 있었어서.. 분명히 방향 전환을 쉽게 딱 할 수 있는 코드가 있을 것 같은데 내 머리론 생각해내지 못했다. 그래서 다른 코드 방향 전환 부분만 약간 참고하게 됐다.
전체적인 로직은 다 맞는 거 같은데 계속 틀려서 뭐가 문제지 하다가 방향 전환 부분만 바꾸니 쉽게 통과되었다.
내 부족함 때문에 조금 헤매긴 했지만, 결국 문제 지문을 잘 숙지한다면 쉽게 풀렸을 문제인 것 같다.
pypy3으로 제출 시 메모리, 시간 모두 비효율적이다.
'Algorithm > Implementation' 카테고리의 다른 글
[Baekjoon 2002 / Python / 실버1] 추월 (1) | 2025.01.22 |
---|---|
[Baekjoon 2108 / Python / 실버3] 통계학 (2) | 2024.09.25 |
[Baekjoon 2503 / Python / 실버3] 숫자 야구 (4) | 2024.06.10 |
[Baekjoon 13717 / Java / 실버5] 포켓몬 GO (0) | 2024.05.14 |
[Baekjoon 10655 / Java / 실버3] 마라톤 1 (0) | 2024.04.27 |