구름톤 챌린지
C++
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
std::string input;
float W, R;
std::getline(std::cin, input);
istringstream iss(input);
int RM;
iss >> W >> R;
// std::cout << W << ", " << R << std::endl;
RM = W * (1 + (R / 30));
std::cout << RM << std::endl;
return 0;
}
설계
- 공백을 포함한 숫자 두 개 입력
- 변수 W, R 에 할당
- 주어진 연산 후 RM 에 할당
- 이를 출력
생각해볼 거리
getline
- std::cin 은 공백을 구분자로 하기 때문에 사용하지 못한다. 그러므로 개행 또는 세 번째 인자로 오는 구분자를 사용해 자르는 getline 을 사용한다.
istringstream
- 생성자 인자로 받은 string 으로 iss 라는 이름의 변수에 저장한다.
- getline 으로 받은 문자열을 공백을 구분자로 잘라 W, R 에 할당할 것인데 이를 stringstream 을 사용해 구분함. 이는 공백을 구분자로 잘라서 변수에 할당해준다.
소수점 이하의 값 버리기
- 소수점 이하의 값을 버리는 여러 방법이 있겠지만 가장 쉬운 방법은 type casting 을 이용한 방법이다. 소수점 아래의 값을 RM 에 할당하기 전까지는 가지고 있어야 하기 때문에 float 타입의 변수로 연산하다가 할당하면서 int 자료형의 데이터로 묵시적 형변환을 한다. 이렇게 하면 자연스럽게 소수점 이하의 값은 모두 버리게 된다.