백준 2675 C++

yun·2023년 12월 24일
0

C++

목록 보기
11/41

C++에서 문자열 다루기 쉽지 않네

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

using namespace std;

vector<string> split(string str, char delimiter);
string S;
vector<string> split_input;
int T;
int R;


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> T;
    cin.ignore(); // getline 시 개행 문자가 섞이지 않게 하기 위해 필요

    for (int i = 0; i < T; i++)
    {
        // 공백 포함 문자열 입력
        getline(cin, S);
        
        split_input = split(S, ' ');

        // 입력값의 첫 문자열을 숫자로 형변환
        R = stoi(split_input[0]);

        string P;

        // 입력된 문자열의 모든 캐릭터로 반복
        for (char c : split_input[1])
        {
            // R개의 char를 P에 추가
            P += string(R, c);
        }

        cout << P << endl;
    }

}


vector<string> split(string input, char delimiter)
{
    vector<string> answer;
    stringstream ss(input);
    string temp;

    while (getline(ss, temp, delimiter))
    {
        answer.push_back(temp);
    }

    return answer;
}
  1. 전제
  • 첫 줄에서는 테스트 케이스 갯수 T를 입력받는다.
  • T개만큼의 데이터는 "R 문자열" 형태로 주어진다.
  1. 입력
  • cin만 하고 getline() 함수를 실행하면 cin에서 입력된 개행문자가 섞여서 에러가 발생하기 때문에, T만 입력받고 개행문자는 무시하도록 cin.ignore() 추가
  • 공백 포함 문자열을 입력 받기 위해 getline() 함수 사용
  1. 출력
  • 공백을 구분자로 split하기 위해 stringstream 사용
  • 첫 글자는 int 타입 변수 R에 담기 위해 stoi 함수 사용
  • string 생성자로 char를 R번 반복한 문자열 생성

0개의 댓글