본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1165번 : 축구의 신 1

by 빛밤하늘 2021. 8. 22.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

축구의 신 1

74분에 투입되면 74, 79, 84, 89 분에 골을 넣게 된다.

codeup.kr

 

 

 

 

 

 

 

 

주의해야 할 점

이 문제에서 사용한 map을 사용한 입력 방식은 정말 많이 사용하는 입력 방식입니다.

이해하고 거의 외운 것 마냥 써봅시다.



성익이가 투입되자마자 한 골을 넣으며, 

딱 90분이 되면 성익이가 골을 넣을 타이밍이라고 해도 골을 넣을 수 없다는 것에

주의하면서 문제를 풀면 됩니다.

한 번만에 안 풀리면 여러 가지 경우를 생각해서 맞는 결과가 나오는지 확인해봅시다.




생각한 풀이 과정

  1. readline을 사용하기 위해 import 합니다.
  2. 현재 경기시간과 우리 팀의 득점을 공백으로 구분해 입력합니다. 각각 정수형으로 변환하고, 변수 game_time, score에 넣어줍니다.
  3. 총 경기시간은 90분이므로 90에서 현재 경기시간인 game_time의 값을 빼 남은 경기시간을 구하고 변수 remain_time에 저장합니다.
  4. 투입된 성익이가 넣을 골의 개수를 저장할 변수인 sungik_goal을 선언합니다. 처음에는 0으로 초기화합니다.
  5. 성익이는 투입되자마자 한 골을 넣고 5분마다 또 한 골씩 넣으며, 딱 90분이 되면 성익이가 골을 넣는 타이밍이라고 해도 넣을 수 없습니다.
  6. 문제의 예제처럼 현재 경기시간이 74분이면 남은 경기시간은 16분이고, 74, 79, 84, 89분에 성익이가 한 골씩 넣습니다.
  7. 현재 경기시간이 80분이면 남은 경기시간은 10분이고, 80, 85분에 성익이가 한 골씩 넣습니다. 
  8. 규칙을 잘 보면 남은 경기시간이 5의 배수가 아니면 남은 경기시간에 5를 나누고 나온 몫에 1을 더한 값이 성익이가 넣은 골의 개수이고, 남은 경기시간이 5의 배수이면 남은 경기시간에 5를 나누고 나온 몫이 성익이가 넣은 골의 개수입니다.
  9. 과정 8대로 코드를 작성합니다. 남은 시간인 remain_time의 값이 5의 배수라면, 즉, 5로 나누었을 때 나머지가 0이라면, 성익이가 넣은 골의 개수 sungik_goal 변수에 remain_time의 값에 5를 나누고 나온 몫을 저장합니다.
  10. 남은 시간인 remain_time의 값이 5의 배수가 아니라면, 즉, 5로 나누었을 때 나머지가 0이 아니면, 성익이가 넣은 골의 개수 sungik_goal 변수에 remain_time의 값에 5를 나누고 나온 몫에 1을 더한 값을 저장합니다.
  11. 원래 득점수 score의 값과 성익이가 넣은 골의 개수 sungik_goal의 값을 더해 우리 팀의 최종 득점을 구하고 그 값을 출력합니다.

 

 

 

 

 

 

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 현재 경기시간과 우리 팀의 득점을 공백으로 구분해 입력합니다.
# 각각 정수형으로 변환합니다.
game_time, score = map(int, stdin.readline().split())
# 남은 경기시간을 저장하는 변수를 선언합니다.
remain_time = 90 - game_time
# 투입된 성익이가 넣을 골의 개수를 저장할 변수를 선언합니다.
# 처음에는 0으로 초기화합니다.
sungik_goal = 0

# 성익이는 투입되자마자 한 골을 넣고 5분마다 한 골씩 넣으며, 
# 딱 90분이 되면 성익이가 골을 넣는 시간이라고 해도 넣을 수 없습니다.

# 남은 시간이 5의 배수라면 
if remain_time % 5 == 0:
    # 성익이가 넣을 골의 개수는 남은 시간을 5로 나눈 몫입니다.
    sungik_goal = remain_time // 5
# 남은 시간이 5의 배수가 아니라면
else:
    # 성익이가 넣을 골의 개수는 남은 시간을 5로 나눈 몫에 1을 더한 값입니다.
    sungik_goal = remain_time // 5 + 1

# 원래 득점수와 성익이가 넣은 골의 개수를 더해 우리 팀의 최종 득점을 구하고 출력합니다.
print(score + sungik_goal)

 

 

 

제출 결과

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글