
문제를 풀어도 풀어도 왜 정답이 나오지 않을까 고민했다.
우선 처음 작성했던 코드를 실행하면 원하는 대로 결과가 출력되지 않는다.
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string grade;
cin >> grade;
if(grade=="A+"){
cout << 4.3;
}
else if (grade=="A0"){
cout << 4.0;
}
else if (grade=="A-"){
cout << 3.7;
}
else if (grade=="B+"){
cout << 3.3;
}
else if (grade=="B0"){
cout << 3.0;
}
else if (grade=="B-"){
cout << 2.7;
}
else if (grade=="C+"){
cout << 2.3;
}
else if (grade=="C0"){
cout << 2.0;
}
else if (grade=="C-"){
cout << 1.7;
}
else if (grade=="D+"){
cout << 1.3;
}
else if (grade=="D0"){
cout << 1.0;
}
else if (grade=="D-"){
cout << 0.7;
}
else if (grade=="F"){
cout << 0.0;
}
}
문제점은 명확했다.
- 소수점 형식으로 출력하지 못한다.
해당 문제를 해결하기위해 구글링을 통해 다른 사람들이 풀었던 풀이를 참고했다.
찾아보니 대부분의 코드에 소수점 출력을 지정하는 내용의 코드가 포함되어 있었다.
cout << fixed;
cout.precision(1);
처음엔 이 코드가 뭘 의미하는지 도저히 알 수 없었다.
차례대로 살펴보자면,
1. cout << fixed;
해당 명령어는 cout을 사용하여 부동 소수점 숫자를 출력할 때 사용한다.
즉, 고정 소수점 표기법으로 출력을 할 수 있다는 것!
2. cout.precision(1);
해당 명형어는 부동 소수점 숫자의 소수점 이하의 자릿수를 1자리로 설정하는 것이다.
즉, 출력되는 숫자는 소수점 첫 번째 자리까지만 출력되는 것이다.
이렇게 2개의 코드를 활용해서 소수점 1자리까지 고정적으로 출력하겠다!라고 결정한 것이다.
해당 코드를 넣어주면!
문제에서 의도한대로 소수점 1자리까지 정상적으로 출력할 수 있다.
'Computer Science > PS' 카테고리의 다른 글
[PS] while()문 (1) | 2024.01.04 |
---|---|
[PS] 문자열의 길이를 반환하는 .length() (1) | 2024.01.03 |
[PS] 별 찍기 모음 (0) | 2023.12.24 |
[PS] 15552. 빠른 A+B (1) | 2023.12.19 |
[PS] 10804. 카드 역배치 (2) | 2023.12.18 |