난이도 : D2
문제번호 : 1946
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
원본 문서는 너비가 10인 여러 줄의 문자열로 이루어져 있다. |
예제
압축된 문서의 내용 A 10 B 7 C 5 압축을 풀었을 때 원본 문서의 내용 AAAAAAAAAA BBBBBBBCCC CC |
제약사항
1. 압축된 문서의 알파벳과 숫자 쌍의 개수 N은1이상 10이하의 정수이다. (1 ≤ N ≤ 10) 2. 주어지는 알파벳 Ci는 A~Z의 대문자이다. (i는 줄의 번호로 1~N까지의 수) 3. 알파벳의 연속된 개수로 주어지는 수 Ki는 1이상 20이하의 정수이다. (1 ≤ Ki ≤ 20, i는 줄의 번호로 1~N까지의 수) 4. 원본 문서의 너비는 10으로 고정이다. |
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 N이 주어지고 다음 줄부터 N+1줄까지 Ci와 Ki가 빈 칸을 사이에 두고 주어진다. |
출력
각 줄은 '#t'로 시작하고, 다음 줄부터 원본 문서를 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) |
예시
입력 | 출력 |
1 |
#1 AAAAAAAAAA BBBBBBBCCC CC |
2. 문제풀이
간단하게 접근하여 풀 수 있습니다. 입력받은 문자를 반복하여 출력하는데 10개가 될때마다 한줄씩 개행해주면 풀 수 있습니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//1946 D2 간단한 압축풀기
int main() {
//전체 반복횟수
int len;
cin >> len;
for (int l = 1; l <= len; l++) {
int num, s_cnt=0, n_count;
string str;
cin >> num;
cout << "#" << l << endl;
//A~Z까지 입력받기
for (int i = 0; i < num; i++) {
cin >> str >> n_count;
//압축된 횟수만큼 반복
for (int j = 0; j < n_count; j++) {
//10회마다 줄내림
if (s_cnt / 10) {
cout << endl;
s_cnt %= 10;
}
cout << str;
s_cnt++;
}
}
cout << endl;
}
return 0;
}
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
가랏! RC카! C++(SW Expert Academy) (0) | 2020.02.15 |
---|---|
간단한 소인수분해 C++(SW Expert Academy) (0) | 2020.02.14 |
날짜 계산기 C++(SW Expert Academy) (0) | 2020.02.12 |
두 개의 숫자열 python,C++(SW Expert Academy) (0) | 2020.02.11 |
숫자 배열 회전 C++(SW Expert Academy) (0) | 2020.02.10 |
댓글