흔하디 흔한 if-else문을 익히는 문제이다.

다만 이렇게 정리하는 이유는 원래 사용하던 C/C++이었으면 금방 풀었을텐데, 

아직도 2개 이상의 입력받기를 할 때 python으로 처리하는 방법이 계속 햇갈려서이다.

정리겸 한 번 올리기로 한다.

출처: https://www.acmicpc.net/problem/11367


예제 입력에서 "name value"의 형태로 입력받는 부분이 계속 햇갈린다..

그냥 scanf로 받으면 되는 C/C++과는 살짝 다르게 python을 받기 때문이다.

중요한 것은 split()을 사용하고, 각각의 변수에 이를 통해서 저장하도록 만들어야 한다는 점이다.

즉, 다음과 같은 형태가 필요하다.

1
name, score = input().split()
cs

 

결국 내가 만든 정답코드는 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
repeat = int(input())
for i in range(0, repeat):
    name, score = input().split()  # 이 부분이 중요. 2개 이상 입력받기를 계속 햇갈리는 중...2021-7-16
    # print(name, score, sep=' ')
    if int(score) >= 97:
        grade = "A+"
    elif int(score) <= 96 and int(score) >= 90:
        grade = "A"
    elif int(score) <= 89 and int(score) >= 87:
        grade = "B+"
    elif int(score) <= 86 and int(score) >= 80:
        grade = "B"
    elif int(score) <= 79 and int(score) >= 77:
        grade = "C+"
    elif int(score) <= 76 and int(score) >= 70:
        grade = "C"
    elif int(score) <= 69 and int(score) >= 67:
        grade = "D+"
    elif int(score) <= 66 and int(score) >= 60:
        grade = "D"
    else:
        grade = "F"
    print(name, grade, sep=' ')
 
cs

문제는 내가 바보라서 일일이 int(score)를 elif에 넣었다는 것이다.

그냥 간단하게 ....

1
score = int(score)
cs

이렇게 한 다음 elif문에 score만 넣으면 되는 것을....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
repeat = int(input())
for i in range(0, repeat):
    name, score = input().split()  # 이 부분이 중요. 2개 이상 입력받기를 계속 햇갈리는 중...2021-7-16
    # print(name, score, sep=' ')
    score = int(score)  # 이렇게 하나만 넣으면 score는 int형으로 변환이 된다.
    if score >= 97:
        grade = "A+"
    elif score <= 96 and score >= 90:
        grade = "A"
    elif score <= 89 and score >= 87:
        grade = "B+"
    elif score <= 86 and score >= 80:
        grade = "B"
    elif score <= 79 and score >= 77:
        grade = "C+"
    elif score <= 76 and score >= 70:
        grade = "C"
    elif score <= 69 and score >= 67:
        grade = "D+"
    elif score <= 66 and score >= 60:
        grade = "D"
    else:
        grade = "F"
    print(name, grade, sep=' ')
cs

 

 

출처: https://www.acmicpc.net/problem/11367

 

11367번: Report Card Time

The input will begin with a single line containing just a whole number, n, of the number of hobbits in the class, followed by n lines in the form a b, where a is the hobbit’s name (only alphabetical characters) and b is the hobbit’s grade, given as a w

www.acmicpc.net

 

+ Recent posts