우당탕탕 개발일지
[수학] Softeer level 1 위험한 효도 (Python 파이썬) 본문
💡문제 링크
💡문제 분석 요약
"무궁화 꽃이 피었습니다" 게임
1. 남우는 a초동안 술래를 향해 다가갈 수 있고, b초동안은 멈춰있어야 한다.
2. 술래를 터치한 후에는 b초동안 술래로부터 멀어질 수 있고, a초동안은 멈춰있어야 한다.
3. 술래를 향해 가서 터치했다가 다시 돌아오기까지 걸리는 최소시간을 구하시오.
💡알고리즘 설계
1. d를 a로 나눈 몫과 나머지를 구한다.
2. 술래를 터치하기까지 몫 * (a+b) + 나머지만큼의 시간이 걸린다.
3. d를 b로 나눈 몫과 나머지를 구한다.
4. 다시 돌아오기까지 몫 * (a+b) + 나머지만큼의 시간이 걸린다.
5. 예외 처리: 몫이 1이면 ( 몫 - 1) * (a+b) + 나머지로 계산한다.
💡코드
import sys
a, b, d = map(int, input().split())
t = 0 # 최소 시간
p, q = d // a, d % a
if q == 0:
t += (p - 1) * (a + b) + a
else:
t += p * (a + b) + q
m, n = d // b, d % b
if n == 0:
t += (m - 1) * (a + b) + a
else:
t += m * (a + b) + n
print(t)
💡 느낀점 or 기억할정보
1. 처음에는 a초동안 1씩 움직이게 하려고 했는데, 시간초과가 떠서 몫-나머지를 생각해냈다.
2. 초반에 짠 몫-나머지 코드는 오류가 있었는데, 예를 들어 a = 10, b = 3, d = 10이면 술래를 터치하기까지의 시간이 10이어야 하는데 13이 되는 문제가 있었다. 그래서 예외케이스를 처리하는 if문을 추가했다.
'알고리즘' 카테고리의 다른 글
[스택/큐] 프로그래머스 level 2 프로세스 (Python 파이썬) (0) | 2024.04.03 |
---|---|
[스택/큐] 프로그래머스 level 2 기능개발 (Python 파이썬) (0) | 2024.03.26 |
[해싱] Softeer level 2 비밀메뉴 (Python 파이썬) (0) | 2024.03.22 |
[해싱] Softeer level 2 GBC (Python 파이썬) (1) | 2024.03.22 |
[정렬] Softeer level 2 금고털이 (Python 파이썬) (0) | 2024.03.17 |