우당탕탕 개발일지

[수학] Softeer level 1 위험한 효도 (Python 파이썬) 본문

알고리즘

[수학] Softeer level 1 위험한 효도 (Python 파이썬)

민아당긴아 2024. 3. 22. 13:33

💡문제 링크

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

💡문제 분석 요약

"무궁화 꽃이 피었습니다" 게임

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문을 추가했다.