Python/algorithm
백준 병든 나이트
baecode
2025. 4. 13. 21:32
반응형
링크: https://www.acmicpc.net/problem/1783
📌 문제 요약
나이트가 체스판 위에서 이동할 수 있는데, 병들어서 **2가지 방향으로만 이동 가능**함.
단, 방문 횟수에 따라 **움직일 수 있는 방향 제약 조건**이 있음.
- 나이트는 총 4가지 방식으로 이동 가능 (실제론 2가지)
- 세로로는 위로만 이동함
- 총 이동 횟수에 따라 4가지 이동 방식 중 적어도 3가지 이상을 사용해야 제약이 풀림
📌 분기
- 높이 H가 1 → 움직일 수 없음 (정답: 1)
- H가 2 → 위로 2칸 못 가니까 최대 4번까지만 가능 (이동 방식 제한)
- H ≥ 3 and W < 7 → 이동 방향 4개 중 3개 이상 못 쓰니까 최대 W까지만
- 그 외에는 자유롭게 이동 가능 → W - 2칸까지 가능
💻 코드
n,m = map(int, input().split())
def solution(n, m):
if n == 1:
return 1
elif n == 2:
return min(4,(m + 1) // 2)
elif m < 7:
return min(4, m)
else:
return m-2
print(solution(n,m))
📈 시간 복잡도
- O(1) - 조건 분기만 있기 때문에 입력 크기에 영향 없음
🧪 예제 확인
입력: 100 50
출력: 48
반응형