백준 단계별로 풀어보기 2단계 if문 2번문제
9498번: 시험 성적
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제의 핵심
1. if문으로 다양한 경우의 조건을 분류할 수 있는가?
2. switch문 변형으로 간략하게 표현해보자.
하단에 if문과 switch문 두가지로 정답을 올려두었다.
if문으로 문제를 풀 때는
else if를 사용해서 경우를 분리해주면
아주 간단하게 해결 할 수 있다.
딱히 설명할 것이 없다.
마찬가지로 이 문제도 switch로 해결할 수 있는데,
이번에는 변형된 switch문으로 풀어보고자 한다.
정답으로 출력할 string 문자열을 선언할 때
switch문을 함께 사용해서 점수별로 각각 해당 등급의 문자가 입력되도록 하는 방식이다.
문자열을 입력받아서 바로 int형으로 바꾸는 또 다른 방식.
int input = Convert.ToInt32(Console.ReadLine());
if문에서 범위 형태로 케이스 분류를 했으니 이번에는 다른 방식으로 분류를 해보자.
int score = (int)(Math.Truncate(input / 10.0) * 10);
Math.Truncate는 소수점을 없애준다.
즉, 입력된 점수를 10으로 나눈 다음에 소수점을 없애고 다시 10을 곱해준다.
따라서
99~90은 전부 90으로,
89~80은 전부 80으로
이렇게 변환되는 것.
100점은 당연히 100이다.
그리고 이제 string을 선언하면서 스위치문을 사용해보도록 하자.
string grade = score switch { 조건에따른분류 };
이렇게 선언하면 된다.
해석해보면
grade라는 이름으로 문자열을 선언하는데 저장할 문자열은
앞서서 입력받은 score를 스위치문으로 분류해서 { } 내부의 조건에 따라서 입력되는 방식이다.
{ 90 => "A",
80 => "B",
70 => "C" };
{} 내부에는 이런식으로 적어준다.
앞에 숫자는 스위치문으로 나눠질 경우를 써준다.
'=>' 뒤에는 해당 경우일 때 입력될 문구를 적어준다.
그리고 끝에 꼭 세미콜론을 적어주는 것을 잊으면 안된다.
그럼 점수별로 문자열이 각각 알맞게 입력되는 스위치문이 완성된다.
이 경우에도 when절을 사용해서 추가적인 조건 검색을 할 수 있다.
if문 정답코드
using System;
namespace 조건문2
{
class Program
{
static void Main(string[] args)
{
int x = int.Parse(Console.ReadLine());
if (x >= 90)
{
Console.WriteLine("A");
}
else if (x >= 80)
{
Console.WriteLine("B");
}
else if (x >= 70)
{
Console.WriteLine("C");
}
else if (x >= 60)
{
Console.WriteLine("D");
}
else
{
Console.WriteLine("F");
}
}
}
}
switch문 정답 코드
using System;
namespace 조건문2
{
class Program
{
static void Main(string[] args)
{
// 입력받아서 int형으로 전환
int input = Convert.ToInt32(Console.ReadLine());
// 1의자리 버리면서 숫자 동일하게 설정
int score = (int)(Math.Truncate(input / 10.0) * 10);
// 추가 조건 검색
bool repeated = false;
// 문자열을 선언하면서 곧장 스위치문 사용
string grade = score switch
{
100 => "A",
90 => "A",
// 추가 조건 검색 가능
80 when repeated == true => "B+",
80 => "B",
70 => "C",
60 => "D",
_ => "F"
};
Console.WriteLine(grade);
}
}
}
'C# > C# : Baekjoon' 카테고리의 다른 글
[백준] C# : 사분면 고르기 (14681번) (0) | 2021.07.22 |
---|---|
[백준] C# : 윤년 (2753번) (0) | 2021.07.22 |
[백준] C# : 두 수 비교하기 (1330번) (2) | 2021.07.22 |
[백준] C# : 곱셈 (2588번) (1) | 2021.07.22 |
[백준] C# : 나머지 (10430번) (0) | 2021.07.22 |
댓글