5355번: 화성 수학
겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산
www.acmicpc.net
문제 자체는 직관적이고 쉬웠으나 c++의 새로운 개념들을 공부하면서 문제를 푸느라 시간이 걸렸다.
#include <iostream>;
#include <stdio.h>;
#include <string>;
#include <vector>;
using namespace std;
int main()
{
double num, t;
string oper;
cin >> t;
vector<double> ansVec;
for(int i = 0; i < t; i++)
{
cin >> num;
getline(cin, oper);
for (int j = 0; j < oper.size(); j++)
{
if (oper[j] == '@') num *= 3;
else if (oper[j] == '%') num += 5;
else if (oper[j] == '#') num -= 7;
}
ansVec.push_back(num);
}
for (int i = 0; i < ansVec.size(); i++) {
printf("%.2f\n", ansVec[i]);
}
}
개인적으로 입력과 출력을 분리시켜서 기능을 구현하는 것을 선호하는데 이럴 때 필연적으로 C#의 컬렉션 기능이 필요하다. 지금까지 C++로 문제를 해결할 때는 동적배열을 사용하였는데 배열의 갯수를 반환하거나 그 외 부가적인 기능을 쓰는게 너무 불편하여 벡터 사용법을 찾아보았다. 헤더파일 vector를 참조해야 하며 문자열 배열과 같은 방식(변수명.size())으로 배열의 갯수를 반환 받을 수 있는 점이 사용하기 편했다.
Vector
헤더파일 <vector>
선언 : vector<타입> 변수명
배열의 갯수 : 변수명.size()
getline() -> 띄어쓰기를 무시하고 문자열을 추가해주면서 입력 중 엔터를 사용하면 문자열의 갯수를 미리 정하지 않아도 자동으로 값이 할당된다. 헤더파일 <String>을 선언해야한다.
'Algorithm > C++ BOJ' 카테고리의 다른 글
C++) [BOJ] 2935 소음 (0) | 2023.02.19 |
---|---|
C++) [BOJ] 2675 문자열 반복 (0) | 2023.02.11 |
C++) [BOJ] 2914 저작권 (0) | 2023.02.10 |
C++) [BOJ] 11022 A+B - 8 (0) | 2023.02.02 |
C++) [BOJ] 11021 A+B - 7 (0) | 2023.01.30 |