26. Print Pretty
[ 난이도: Easy | 분야: STL ]
1. 과제
많은 줄 수를 가진 텍스트 파일 안 각각 3 개의 공백으로 구분된 double을 양식에 맞게 출력하라.
아래 section처럼 각 숫자들을 출력하라.
입력 형식
첫 번째 줄은 정수 T를 가지고 있고, 정수 T는 테스트 케이스의 수를 나타낸다.
각 T개의 하위 시퀀스 줄들은 3개의 공백으로 구분된 소수들로 이루어진 테스트 케이스를 가지고 있다. : A, B, C
제약 사항
T는 1보다 크거나 같고 1000보다 작거나 같다.
각 수들은 double 형식에 맞게 들어가 있다.
출력 형식
각 테스트 케이스 별로, 형식에 맞게 A, B 그리고 C를 3 줄로 출력하라.
각 A, B 그리고 C는 아래의 양식을 따른다:
1. A: 소수점을 버리고 이 수를 16진수(0x를 포함하여)로 출력하라.
2. B: 소수점 2자리 수까지만 출력하고 + 또는 -로 부호를 표기하라. 또한 왼쪽 정렬을 했을 때 15자리가 되도록 _를 추가하라.
3. C: 소수점 9자리까지만 출력하고 대문자를 이용하여 과학적 표기법으로 수를 표현하라.
입력 예시
1
100.345 2006.008 2331.41592653498
출력 예시
0x64
_______+2006.01
2.331415927E+03
설명
출력의 첫 번째 줄은, (100)_10 → (64)_16이다.
출력의 두 번째와 세 번째 줄은 출력 형식에 맞추어 출력했다.
문제
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int T; cin >> T;
cout << setiosflags(ios::uppercase);
cout << setw(0xf) << internal;
while(T--) {
double A; cin >> A;
double B; cin >> B;
double C; cin >> C;
/* Enter your code here */
}
return 0;
}
정답
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int T; cin >> T;
cout << setiosflags(ios::uppercase);
cout << setw(0xf) << internal;
while(T--) {
double A; cin >> A;
double B; cin >> B;
double C; cin >> C;
/* Enter your code here */
// A
cout << left << hex << nouppercase << showbase << (long)A << endl;
// B
cout << dec << setw(15) << right << setfill('_') << showpos << fixed << setprecision(2) << B << endl;
// C
cout << scientific << noshowpos << setprecision(9) << uppercase << C << endl;
}
return 0;
}
여기서 주의점은 16진수로 바꿀 때 숫자는 실수가 아닌 정수여야 한다는 데 있다. 무작정 int로 형변환을 하게 되면 int보다 더 큰 수를 표현하는 테스트 케이스에 걸리게 된다. 위 코드처럼 형 변환 시 long으로 변환해야 한다.
cout의 부가 기능에 관한 것은 아래 블로그를 참조했다.
https://velog.io/@jh11240/C-cout-%EC%B6%9C%EB%A0%A5%EC%97%90-%EA%B4%80%ED%95%B4
©️Hackerrank. All Rights Reserved.
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
[Hackerrank] 28. Inheritance Introduction (0) | 2024.02.23 |
---|---|
[Hackerrank] 27. Deque-STL (0) | 2024.02.22 |
[Hackerrank] 25. Maps-STL (0) | 2024.02.20 |
[Hackerrank] 24. Sets-STL (0) | 2024.02.20 |
[Hackerrank] 23. Lower-Bound STL (0) | 2024.02.20 |