본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 9498번(파이썬)

by 올커 2022. 9. 18.

백준 9498번_파이썬 알고리즘

Q. 백준 9498. 시험 성적

사용자로부터 시험성적을 입력받아 아래와 같이 출력하는 프로그램을 작성한다.

점수 출력
90 ~ 100점 A
80 ~ 89점 B
70 ~ 79점 C
60 ~ 69점 D
나머지(0 ~ 59점) F

(1) 입력 : 첫째 줄에 시험점수를 입력받는다. (*0 <= 점수 <= 100, 정수)
(2) 출력 : 입력받은 시험점수에 해당되는 시험 성적(학점) 출력

                (*각 점수별 성적은 위의 표 참고)


A. 풀이

 - 다양한 풀이방법으로 접근하기 위해 아래와 같이 삼항연산자를 중첩하여 코드를 짰다.

# Q 백준 9498, 시험 성적
score = int(input())

print("A") if score >= 90 else (print("B") if score >= 80 else (print("C") if score >= 70 else (print("D") if score >= 60 else print("F"))))

1) 변수 선언부

 - 먼저 학생의 점수를 입력받는다. 입력받을때 'input()'은 문자열로 처리되므로, 계산을 위해 'int()'함수로 전체를 묶어주어야 한다.

 

2) 조건문(if문)

 - 아래와 같이 삼항연산자를 활용하여 코드를 짰다.

print("A") if score >= 90 else (print("B") if score >= 80 else (print("C") if score >= 70 else (print("D") if score >= 60 else print("F"))))

 - 장점이라면, 길어지는 코드를 한 줄에 짠 것이지만, 사용자에 따라 이부분이 오히려 단점이 될 수도 있겠다.

 - 삼항연산자를 사용하지 않고 코드를 작성한다면 아래와 같이 짤 수 있다. 코드를 짤 때, 조건문이 너무 복잡한 조건을 주는 것이 아니라고 판단하여 위와 같이 간단하게 삼항연산자를 적용하였다.

if score >= 90:
	print("A") 
elif score >= 80:
	print("B")
elif score >= 70:
	print("C")
elif score >= 60:
	print("D")
else:
	print("F")

 - 조건문을 좀 보자면, 가장 먼저 '점수가 90이상'을 조건으로 잡았다. if문을 사용할 때에는 가장 국소적인 조건부터 포괄적인 조건으로 써내려가야 중첩되는 부분으로 잘못된 답을 도출하는 경우를 막을 수 있다.


R. 리뷰

 - 새로운 문제에 새로운 접근방식은 도움이 많이 되지만, 익숙하지 않고 나중에 다시 떠올리기 힘든 부분이 있다.

 - 특히 삼항연산자, 화살표함수 등이 익숙해지기 어려운 것 같다. 사실 아직 어떤 코드가 직관적인지 감이 잘 오지 않는다. 다른 개발자들이 작성한 더 복잡한 코드들을 많이 보고 해석해보면서 시야를 넓힐 필요가 있다.

반응형

댓글