본문 바로가기

코드업 문제집 파이썬 if ~else 1165 : 축구의 신 1

관리하수달 2026. 8. 29.

[문제]

지금 1반과 2반이 축구를 하고있다.

축구경기 타임은 총 90분이고,

현재 1반이 0점, 2반이 2점인 상황에서, 1반은 경남정보고 최고의 스트라이커인 성익이를 투입하기로 결정했다.

성익이는 5분마다 골을 넣을 수 있는 능력을 가지고 있다.

만약 80분에 투입이 되면 80분에 곧바로 골을 넣게되고 85분에 골을 넣음으로서 동점이 가능하게 된다.

(90분이되면 경기가 바로 종료되므로 골을 넣을 수 없다. 동내심판인 성빈이는 성익이가 잘 되는 것을 싫어하기 때문에 추가시간 따위는 주지 않는다. )

현재 경기타임과 우리팀의 득점이 입력으로 주어 질때, 성익이를 투입하면 우리팀의 최종 득점은 몇 점인지 출력하시오.

 

[문제 해설(핵심)]

-> 지금부터 90분이 되기 전까지 5분마다 몇 골을 더 넣을 수 있는지 계산

현재 80분, 현재 0점이라고 했을 때 최종 점수 2점

 

  • 80분 → 골
  • 85분 → 골
  • 90분 → 경기 종료라 골 X

 

[문제 풀이]

1. if else 문 사용

[핵심]

골 넣을 수 있는 마지막 시간 - 현재 시간 
↓
그 시간 동안 5분이 몇 번 들어가는지 계산 //5
↓
투입하자마자 넣는 첫 골 1개 추가 +1

 

input() : 입력받기
split() : 공백을 기준으로 나누기
int : 정수형으로 변환하기
map() : 여러 값에 같은 변환 적용하기

// : 정수 나눗셈

time, score = map(int, input().split())

if time < 90:
    score = score + (89 - time) // 5 + 1
else:
    score = score

print(score)

2. while문을 쓴다면 다음과 같이 풀 수 있다.

현재 시간이 90분보다 작은 동안 반복
↓
골 1개 추가 score += 1
↓
시간을 5분 증가 time += 5
↓
다시 90분보다 작은지 확인

while : 조건이 참인 동안 계속 반복
+= : 기존 값에 더해서 다시 저장
time, score = map(int, input().split())

if time < 90:
    while time < 90:
        score += 1
        time += 5
else:
    score = score

print(score)

3. for문을 쓴다면 다음과 같이 풀 수 있다.

현재 시간부터 90분 전까지
↓
5분 간격으로 시간을 만들어줌 range(time, 90, 5)
↓
시간이 한 번 나올 때마다 골 1개 추가 score += 1

for : 정해진 범위만큼 반복
range(시작, 끝, 간격) : 시작부터 끝 전까지 일정한 간격으로 숫자 생성
time, score = map(int, input().split())

if time < 90:
    for i in range(time, 90, 5):
        score += 1
else:
    score = score

print(score)

댓글