본문 바로가기
알고리즘/SWEA

[SWEA] 6692. 다솔이의 월급 상자 (*소수점 자릿 수 조정)

by hyerann 2019. 5. 7.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWdXofhKFkADFAWn&categoryId=AWdXofhKFkADFAWn&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

p와 x끼리 곱해서 더하는 아주 쉬운 문제이지만 

  • p가 소수점 이하 여섯 자리까지의 수를 가질 수 있음
  • 정답과의 절대오차 혹은 상대오차가 10^-6 이하이면 정답으로 인정

이 두 조건들을 충족시키기 위해 추가되어야 하는 코드가 두 줄 있다.

cout << fixed;	// 소수점 아래 값을 고정하는 코드 // cout.setf(ios::fixed); 같은 의미
precision(6);	// 소수점 아래 값을 6으로 지정

precision()은 자릿 수를 조정하는 함수이다.

하지만 cout << fixed 후에 precision()을 쓰면 전체 자릿 수가 아닌 소수점 아래 값을 고정하게 된다.

cout << fixed는 cout.setf(ios::fixed)로 대신 쓰일 수 있으며, 설정을 해제하는 함수는 cout.unsetf(ios::fixed)이다.

#include <iostream>
#include <ios>
using namespace std;

int N, x[20];
float p[20];
int getResult();

int main() {
	cin.tie(0); ios::sync_with_stdio;
	cout << fixed; cout.precision(6);

	int T; cin >> T;

	for (int tc = 1; tc <= T; tc++) {
		cin >> N;
		for (int i = 0; i < N; i++) cin >> p[i] >> x[i];
		cout << '#' << tc << ' ' << getResult() << "\n";
	}

	return 0;
}

int getResult() {
	float result = 0;
	for (int i = 0; i < N; i++) {
		result += p[i] * x[i];
	}
	return result;
}

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 9229. 한빈이와 Spot Mart  (0) 2020.02.15
[SWEA] 7728. 다양성 측정  (0) 2019.06.29
[SWEA] 5603. 건초더미  (0) 2019.05.06
[SWEA] 3142. 영준이와 신비한 뿔의 숲  (0) 2019.05.06
[SWEA] 7102. 준홍이의 카드놀이  (0) 2019.05.06

댓글