본문 바로가기
백준 풀이

[백준/BOJ] - 2675번 c++ 풀이

by 반오십 코린이 2022. 11. 9.
728x90


핵심

1. 테스트케이스 수를 의미하는 N

2. 문자열을 입력하는데 사용하는 변수 S

3. S를 입력할 때 마다 모아 주는 임시 문자열 저장소인 S_temp (각 문자열의 구분은 공백을 통해)

4. S_temp의 각 문자열 시작 index를 의미하는 s_temp_index

5. 문자열의 요소들을 몇번씩 반복해서 출력할지의 지표인 R

6. 각 문자열의 총 길이를 저장시키는 len


입력을 한꺼번에 받고 출력을 한꺼번에 하는 경우를 생각해서 다음과 같이 구현하였는데

백준에서는 입력 한줄에 출력 한줄 식으로 값을 뽑아내도 정답 처리한다고 하니 이를 알고 있으면 코드가 한결 간단해질듯싶다.


#include<iostream>
using namespace std;

int main() {
	int N;//테스트케이스
	string S; //문자열 저장
	string S_temp;
	int s_temp_index[1000] = {0, }; //문자열 시작점
	int R[1000]; //반복횟수 저장 ABC /HTP
	int len[1000] = {0, };	
	cin >> N;

	for (int i=0; i<N; i++) {
		cin >> R[i] >> S;
		S_temp += S;
		len[i] = S.length();
		if (i != 0) //0아닐때
			s_temp_index[i] = s_temp_index[i - 1] + len[i-1] +1; // +1 하는 이유는 띄어쓰기 때문					
		else //0일때
			s_temp_index[i] = 0;
		S_temp += ' '; //문자열 구분 ABC /HTP
	}

	for (int num = 0; num < N; num++) { ////문자열 저장순서에 사용하는 변수 num. s_temp_index, len 등에 다양하게 쓰임
		for (int i = s_temp_index[num]; i < s_temp_index[num] + len[num]; i++) { //문자열 뽑아내기
			for (int j = 0; j < R[num]; j++)	// 문자열 몇번 반복 횟수 for문
			{
				cout << S_temp[i];
			}
		}
		cout << '\n';
	}
}

 

728x90

'백준 풀이' 카테고리의 다른 글

[백준/BOJ] - 3052번 c++ 풀이  (0) 2022.11.11
[백준/BOJ] - 2908번 c++ 풀이  (0) 2022.11.10
[백준/BOJ] - 1546번 c++ 풀이  (0) 2022.11.08
[백준/BOJ] - 1152번 c++ 풀이  (0) 2022.11.07
[백준/BOJ] - 1157번 c++ 풀이  (0) 2022.11.02