728x90
SMALL
백준 문제 풀이: 3035 (스캐너)
문제 링크: https://www.acmicpc.net/problem/3035
문제 설명:
주어진 문자 격자(행렬)를 가로와 세로로 확대합니다.
가로는 zc
배, 세로는 zr
배 만큼 늘려 출력합니다.
격자의 원래 크기는 r × c
입니다.
문제 해결 코드
#include <iostream>
#include <string>
using namespace std;
char arr[51][51]; // 원본 문자 격자
string str[51]; // 확장된 문자열을 저장할 배열
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int r, c, zr, zc; // 행, 열, 세로 배율, 가로 배율
cin >> r >> c >> zr >> zc;
// 원본 격자 입력
for (int i = 0; i < r; i++) {
string s;
cin >> s;
for (int j = 0; j < s.size(); j++) {
arr[i][j] = s[j];
}
}
// 가로로 zc배 확대
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
for (int t = 0; t < zc; t++) {
str[i] += arr[i][j]; // 문자 j를 zc번 반복
}
}
}
// 세로로 zr배 확대하여 출력
for (int i = 0; i < r; i++) {
for (int j = 0; j < zr; j++) {
cout << str[i] << '\n'; // 확장된 가로 문자열 출력
}
}
return 0;
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명:
- 입력 처리:
- 격자의 원본 문자를 입력받아
arr
에 저장합니다. - 가로 확장:
- 각 문자
arr[i][j]
를 **zc번 반복**하여 문자열을 확장합니다. - 확장된 문자열은str[i]
에 저장됩니다. - 세로 확장: - 확장된 가로 문자열을 **zr번 반복**하여 출력합니다.
세부 구현:
- 가로 확장은 각 문자에 대해 반복하여 문자열을 만든 후, 저장합니다.
- 세로 확장은 이미 확장된 문자열을
zr
번 출력하는 방식으로 해결합니다.
시간 복잡도 분석
- 입력 크기가
r × c
일 때, - 가로 확장 O(r × c × zc) - 세로 확장 O(r × zr) - 최종 시간 복잡도는 O(r × c × zc + r × zr)입니다.
결과
격자를 가로와 세로로 각각 배율에 맞게 확장한 결과를 출력합니다.
- 입력 예시:
2 2 2 3 AB CD
- 출력 예시:
AAABBB AAABBB CCCDDD CCCDDD
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 11586번 [지영 공주님의 마법 거울](C++) -yes6686- 티스토리 (0) | 2024.07.14 |
---|---|
백준 3230번 [금메달, 은메달, 동메달은 누가?](C++) -yes6686- 티스토리 (0) | 2024.07.13 |
백준 1592번 [영식이와 친구들](C++) -yes6686- 티스토리 (0) | 2024.07.13 |
백준 17548번 [Greetings!](C++) -yes6686- 티스토리 (0) | 2024.07.13 |
백준 2947번 [나무 조각](C++) -yes6686- 티스토리 (0) | 2024.07.12 |