해당 포스트는 R에서 사용자에게 점수를 입력받으면 학점(등급)을 계산하여 출력해주는 방법에 대해 소개합니다.
INTRO
질문
풀이
1. 문제 파악
먼저, 문제에서 제시된 조건들을 정리하면 아래와 같습니다.
- 0부터 100사이의 정수 값 입력받기
- 입력받은 정수를 학점으로 변환
- for반복문을 이용하여 5회 반복
readline()
을 사용하여 사용자 입력 받기- 입력받은 문자열을 숫자로 변경할 때
as.numeric()
함수 사용
4,5번 조건은 1번 코드를 작성할 때 반영하면 될 것으로 보이고, 3번 조건은 전체 과정을 5번 수행한다(성적을 입력받아 학점을 출력하는 것을 5번 반복하고 종료)로 정의하도록 하겠습니다.
마지막으로 1번은 입력값을 검증하는 과정(입력값이 0~100사이의 값인지)을 추가할 수 있겠으나, 해당 풀이에서는 사용자가 입력값의 범위를 인지하고올바르게 입력할 것이라고 가정하겠습니다.
2. R 코드 작성
'1. 문제 파악'에서 파악한 조건들을 구현하는데 필요한 지식은 아래와 같습니다.
- 0부터 100사이의 정수 값 입력받기
readline()
: 사용자로부터 점수 입력받기as.numeric()
: 입력받은 문자를 숫자로 변경
- 입력받은 정수를 학점으로 변환
- if-else문 : 점수에 따라 학점 부여를 위해 조건문 사용
- for반복문을 이용하여 5회 반복
- for문 : 문제 조건에 따라 학점 구하기를 5번 수행
위 정보들을 활용해 작성한 전체 코드는 아래와 같으며, 코드가 전반적으로 직관적인 편이라 부분 수정이 어렵지 않을 것입니다.
for (i in 1:5) {
score <- as.numeric(readline(prompt = "> 성적을 입력하세요 : "))
if (score >= 95) {
print("A+")
} else if (score >= 90) {
print("A")
} else if (score >= 85) {
print("B+")
} else if (score >= 80) {
print("B")
} else if (score >= 75) {
print("C+")
} else if (score >= 70) {
print("C")
} else if (score >= 65) {
print("D+")
} else if (score >= 60) {
print("D")
} else{
print("F")
}
}
> 성적을 입력하세요 : 80 [1] "B" > 성적을 입력하세요 : 60 [1] "D" > 성적을 입력하세요 : 75 [1] "C+" > 성적을 입력하세요 : 100 [1] "A+" > 성적을 입력하세요 : 59 [1] "F"
3. 참고 사항
위 코드는 최대한 직관적이고 간단하게 풀이하였으며, 입력값 범위를 제한하지 않았기에 일반적인 값의 범위(0~100점)를 벗어난 경우 아래와 같이 오류/에러를 출력할 수 있습니다.
마무리
해당 문제 풀이의 난이도는 생각보다 높지 않은 편입니다. 'if-else 조건문'과 '사용자 입력'을 목적에 맞게 사용하시는 법을 이해하신다면 이후 파생 문제들도 충분히 풀이하실 수 있으실 겁니다.
관련 링크
[1] 네이버 지식인