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

[CodeUp][Python] 1222번 : 축구의 신 2

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

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

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

 

축구의 신 2

현재 경기타임에 축구의 신 성익이를 투입하여 1반이 이길 수 있으면 "win", 동점이 되면 "same", 투입해도 이기지 못하면 "lose"를 출력하시오. (성익이는 해당 시간에 1반에만 투입되며, 성익이가 투

codeup.kr

 

 

 

주의해야 할 점

1. map, split을 사용하는 입력 방식

실수나 정수인 여러 값들이 입력값일 때,

split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,

map 내장 함수로 각각의 값들을 int형이나 float형으로

정수, 실수 자료형으로 변환하는 하는 기법은 매우 많이 쓰입니다.

코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.

num1, num2 = map(int, sys.stdin.readline().split())

 

2. 성익이가 넣은 골의 개수

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

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

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

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

 

이 주의할 점은 이전에 풀었던 1165번과 같습니다.

밑의 링크는 코드업에서 1165번을 풀고 해설한 제 블로그에 있는 포스팅입니다.

이 문제를 먼저 봤다면, 밑의 링크도 한 번 보세요.

 

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

밑의 링크는 CodeUp에서의 문제 링크입니다. 문제는 링크를 통해서 직접 봐주시길 바랍니다. 축구의 신 1 74분에 투입되면 74, 79, 84, 89 분에 골을 넣게 된다. codeup.kr 주의해야 할 점 이 문제에서 사

brightnightsky77.tistory.com

 

예제 설명

1. 첫 번째 예제

- 입력

80 5 7

 

- 출력

same

 

- 설명

입력한 현재 경기 타임, 1반 득점, 2반 득점은 각각 80, 5, 7입니다.

성익이는 투입되자마자 골을 넣고, 딱 90분부터 골을 넣을 수 없으므로, 80, 85분에 골을 넣습니다.

1반의 득점은 기존 5점에 성익이가 넣은 2점을 더한 7점이 됩니다.

1반 득점과 2반 득점이 같으므로 문자열 'same'을 출력합니다.

 

생각한 풀이 과정

현재 경기 타임, 1반 득점, 2반 득점을 입력합니다.

총 경기 시간은 90분이므로 90에서 성익이가 투입되는 현재 경기 타임을 빼서 남은 경기 시간을 구합니다.

 

성익이는 투입되자마자 골을 넣고, 이어서 5분마다 골을 넣으며, 경기 종료 시간 90분부터 골을 넣지 못합니다.

남은 경기 시간이 5의 배수라면, 성익이는 남은  경기 시간에 5를 나눈 몫만큼 골을 넣습니다.

남은 경기 시간이 5의 배수가 아니라면, 성익이는 남은 경기 시간에 5를 나눈 몫에 1을 더한만큼 골을 넣습니다.

성익이가 넣은 골의 개수를 1반 득점에 더해줍니다.

 

1반 득점이 2반 득점보다 크다면, 1반이 이겼으므로 문자열 'win'을 출력합니다.
1반 득점이 2반 득점과 같다면, 동점이므로 문자열 'same'을 출력합니다.

1반 득점이 2반 득점보다 작다면, 1반이 졌으므로 문자열 'lose'를 출력합니다.

 

 

제출한 파이썬 코드

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


# 현재 경기 타임, 1반 득점, 2반 득점을 공백으로 구분해 입력합니다.
# 각각 int형으로 변환합니다.
cur_time, class1_score, class2_score = map(int, stdin.readline().split())
# 남은 경기시간을 저장하는 변수를 선언합니다. 
remain_time = 90 - cur_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

# 기존의 1반 득점에 성익이가 넣은 골의 개수를 더해줍니다.
class1_score += sungik_goal

# 1반 득점이 2반 득점보다 크다면
if class1_score > class2_score:
    # 문자열 'win'을 출력합니다.
    print('win')
# 1반 득점이 2반 득점과 같다면
elif class1_score == class2_score:
    # 문자열 'same'을 출력합니다.
    print('same')
# 그 외의 경우인 1반 득점이 2반 득점보다 작다면
else:
    # 문자열 'lose'를 출력합니다.
    print('lose')

 

제출 결과

CodeUp 1222번 : 축구의 신 2에서 코드 제출 결과
CodeUp 1222번 : 축구의 신 2에서 코드 제출 결과

 

 

 

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

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

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글