문제 : https://www.acmicpc.net/problem/9498 (백준 온라인 저지)

정답 코드

if문으로 처리를 해도 되지만 switch문으로 수행하면 더 간결해보일 것 같아 switch문으로 작성하였습니다. 다른 코드들은 1000번 문제에서 설명드렸으니 설명은 생략하겠습니다.

switch(parseInt(score/10)){

switch 문을 선언합니다. switch문은 지정한 표현식과 일치하는 case 문부터 코드를 수행하며 입력받은 점수에 따라 다른 코드를 수행하기 위해 사용하였습니다. 점수를 처리해주기 위해 표현식을 score/10으로 지정하였는데 표현식을 score만으로 해버리면 60~100 값을 처리할 case문을 다 작성해주어야 하기 처리 때문에 코드가 어마어마하게 길어집니다. 그래서 10으로 나눈 몫을 이용하여 6~10 값만을 처리할 case문만 작성하였습니다. 사용해야할 case문이 확 줄어든 겁니다.

case 10:
case 9:
     console.log("A");
     break;
case 8:
     console.log("B");
     break;
case 7:
     console.log("C");
     break;
case 6:
     console.log("D");
     break;

score 점수를 10으로 나눈 몫이 10인 경우 case 10부터 코드를 수행합니다. 즉 점수가 100점이라면 case 10부터 코드를 수행합니다. 그런데 코드를 보시면 case 10 부분에 코드가 없는데 코드가 없는 이유는 case 9와 수행하는 코드가 동일하기 때문에 굳이 작성할 필요가 없기 때문입니다. 앞에서 말씀드렸듯이 switch 문은 표현식과 일치하는 case문부터 코드를 수행합니다. 즉 case 10부터 코드를 수행한다면 case 10, case 9, case 8.... default 문의 코드까지 수행되게 되므로 case10부터 코드를 수행한다해도 case 9 코드 또한 실행된다는 뜻입니다.

그런데 case 10부터 코드를 수행한다고 하면 case 8, case 7 등의 코드들도 수행이 되버리므로 모든 성적이 출력되버리는 불상사가 발생합니다. 그래서 이를 방지하기 위해 성적출력 코드 밑에 break 문을 추가합니다. 여기서 break문은 switch문 실행을 중지하는 역할을 하므로 case 10 코드를 수행할 때 case 9 코드까지 수행한 후 break 문을 통해 switch문을 종료하게 됩니다. 이 내용을 정리하면 다음과 같습니다.

-> score가 100이면

1. case 10 수행 후 밑의 case 9로 이동합니다.

2. case 9의 console.log("A"); 실행 후 break 문을 통해 switch문을 종료합니다. 즉 case 8은 실행되지 않습니다.

-> score가 93이면

1. case 9의 console.log("A"); 실행 후 break 문을 통해 switch문을 종료합니다. 즉 case 8은 실행되지 않습니다.

-> score가 79이면

1. case 7의 console.log("C"); 실행 후 break 문을 통해 switch문을 종료합니다. 즉 case 6은 실행되지 않습니다.

이제 다음 코드를 살펴봅시다.

default:
     console.log("F");

default는 switch문 가장 마지막에 작성하는 문이며 표현식이 위의 case 중 아무것에도 해당되지 않는다면 default 문을 실행하게 됩니다. 즉 값이 0,1,2,3,4,5 가 나온다면 default의 코드가 수행되며 default 코드를 수행하고 나면 switch문이 종료되므로 break문을 넣어줄 필요가 없어 break를 넣지 않았습니다.

'Programing > Baekjoon 문제 알고리즘(node.js)' 카테고리의 다른 글

2438번 별 찍기  (0) 2022.02.24
2739번 구구단  (0) 2022.02.24
1008번 A/B  (0) 2022.02.24
10869번 사칙연산  (0) 2022.02.24
10998 AxB  (0) 2022.02.24
Posted by englishmath
,