-
[BOJ 1783, Python 3] 병든 나이트알고리즘/BOJ 2021. 7. 31. 13:04반응형
https://www.acmicpc.net/problem/1783
풀이
문제를 읽어보면 if문을 참 많이 써야할 것 같은 생각부터 듭니다.
일단 N = 1일 때는 이동하지 못하므로 답은 무조건 1입니다.
그리고 위 아래로 두 칸씩 움직이냐 / 못 움직이냐로 나뉘어서 N = 2일때와 N >= 3일 때로 분기가 나뉩니다.
N = 2일 때는 오른쪽으로 두 칸씩 이동하는 선택지만 가능합니다. 이것은 (M + 1) // 2로 이동횟수를 구할 수 있습니다. 그런데 문제에서 이동 횟수가 4칸 이상이면 모든 이동 방법을 한 번씩 사용해야하므로 (M + 1) // 2를 출력할지, 4를 출력할지 조건문을 이용하여 출력하면 됩니다.
이제 N >= 3이고, M <= 4일 때 오른쪽으로 한 칸씩 이동할 수 있으므로 답은 M입니다.
M == 5일 떄는 오른쪽으로 한 칸씩 4번 이동할 수 없으므로 두 칸 이동을 한 번 해야합니다. 그래서 M-1(= 4)가 답입니다.
M >= 6일 때는 오른쪽으로 두 칸씩 두 번만 간다면 이제 쭉 오른쪽으로 한 칸씩 이동해도 상관 없습니다. 그래서 답은 M - 2가 됩니다.
이렇게 조건문을 이용하여 답을 구해주면 됩니다.
코드
1234567n, m = map(int, input().split())if n == 1: print(1)elif n == 2:print([(m + 1) // 2, 4][m >= 7])else:if m <= 4: print(m)elif m <= 5: print(m - 1)else: print(m - 2)cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 2847, Python 3] 게임을 만든 동준이 (0) 2021.08.01 [BOJ 2217, Python 3] 로프 (0) 2021.07.31 [BOJ 1758, Python 3] 알바생 강호 (0) 2021.07.31 [BOJ 1543, Python 3] 문서 검색 (0) 2021.07.30 [BOJ 19939, Python 3] 박 터뜨리기 (0) 2021.07.30