[R] 점수를 입력받아 학점 계산하기 ('A+'에서 'F'까지)

해당 포스트는 R에서 사용자에게 점수를 입력받으면 학점(등급)을 계산하여 출력해주는 방법에 대해 소개합니다.

calculating-ratings-from-user-input-score

INTRO

사용자에게 점수를 입력받고, 구간에 따라 학점(등급)을 출력해 주는 함수를 생성해 보겠습니다. 간단하지만 기초 단계에 배우는 사용자 입력, 조건문, 반복문까지 필요한 문제이기에 아래 설명을 참고하시어 기초를 이해하시고 활용해 보시면 좋을 것 같습니다.

calculating-ratings-from-user-input-score
▲ 입력 점수에 따라 학점 출력 실행 결과

질문

calculating-ratings-from-user-input-score
[출처] 네이버 지식인

풀이

1. 문제 파악

먼저, 문제에서 제시된 조건들을 정리하면 아래와 같습니다.

  1. 0부터 100사이의 정수 값 입력받기
  2. 입력받은 정수를 학점으로 변환
  3. for반복문을 이용하여 5회 반복
  4. readline() 을 사용하여 사용자 입력 받기
  5. 입력받은 문자열을 숫자로 변경할 때 as.numeric() 함수 사용


4,5번 조건은 1번 코드를 작성할 때 반영하면 될 것으로 보이고, 3번 조건은 전체 과정을 5번 수행한다(성적을 입력받아 학점을 출력하는 것을 5번 반복하고 종료)로 정의하도록 하겠습니다.
마지막으로 1번은 입력값을 검증하는 과정(입력값이 0~100사이의 값인지)을 추가할 수 있겠으나, 해당 풀이에서는 사용자가 입력값의 범위를 인지하고올바르게 입력할 것이라고 가정하겠습니다.

2. R 코드 작성

'1. 문제 파악'에서 파악한 조건들을 구현하는데 필요한 지식은 아래와 같습니다.

  1. 0부터 100사이의 정수 값 입력받기
    • readline() : 사용자로부터 점수 입력받기
    • as.numeric() : 입력받은 문자를 숫자로 변경
  2. 입력받은 정수를 학점으로 변환
    • if-else문 : 점수에 따라 학점 부여를 위해 조건문 사용
  3. for반복문을 이용하여 5회 반복
    • for문 : 문제 조건에 따라 학점 구하기를 5번 수행


위 정보들을 활용해 작성한 전체 코드는 아래와 같으며, 코드가 전반적으로 직관적인 편이라 부분 수정이 어렵지 않을 것입니다. 코드를 실행하면 '성적을 입력받아 학점 출력'하는 과정을 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점)를 벗어난 경우 아래와 같이 오류/에러를 출력할 수 있습니다.

calculating-ratings-from-user-input-score
▲ 범위가 벗어난 입력을 넣었을 때 출력되는 오류

마무리

해당 문제 풀이의 난이도는 생각보다 높지 않은 편입니다. 'if-else 조건문''사용자 입력'을 목적에 맞게 사용하시는 법을 이해하신다면 이후 파생 문제들도 충분히 풀이하실 수 있으실 겁니다.


관련 링크

[1] 네이버 지식인