[SWEA 26389] 여행 [Python]

2026. 5. 3. 23:47PS 풀이/SW Expert Academy

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

요약

  • 각 방향에 대해, 존재하는 방향의 반대 방향(N-S, E-W) 도 존재하는지 검증하자.

풀이 과정

방향 존재 여부와 원점 복귀 조건

각 날짜에는 N, S, E, W 중 하나의 방향으로 양의 정수 거리만큼 이동합니다.

이동 거리의 최대 제한이 없으므로, 원점으로 돌아오기 위해서는 다음과 같이 이동 방향의 반대 방향이 존재해야 합니다.

  • N 또는 S가 존재할 경우 반대 방향도 존재해야 한다.
  • E 또는 W가 존재할 경우 반대 방향도 존재해야 한다.

거리는 양의 정수만큼 자유롭게 정할 수 있기 때문입니다.

 

다음과 같이 각 방향이 존재하는지 확인합니다.

from collections import defaultdict

def solve():
    direction_exists = defaultdict(bool)

    for a in A:
        direction_exists[a] = True

    return (
        direction_exists["N"] == direction_exists["S"]
        and direction_exists["E"] == direction_exists["W"]
    )

 

조건을 만족해 원점으로 복귀 가능 여부를 판별하면 됩니다.

 

성능 분석

  • 시간 복잡도: $O(N)$
  • 제출결과: Pass / 71ms / 53,760kb

소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/SW%20Expert%20Academy/D3/26389.py

 

problem-solving/SW Expert Academy/D3/26389.py at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com