반응형
1. 문제 예시 실행결과
이번 문제는 입력받은 값만큼 한 문자를 반복해서 출력하는 문제이다. 나름 간단한 문제이지만, 결과 문자열을 어떻게 다루냐에 따라서 나름 생각이 깊어질 수 있는 문제이다. 다음은 문제와 예시 실행결과이다.
출처: https://www.acmicpc.net/problem/2675
다시한번 말하지만 이 문제는 출력형식에 따라 까다로워질 수 있다. 다음은 풀이 과정이다.
2. 문제풀이
첫번째 입력은 간단하다. 솔직히 말하면 두번째 입력도 간단하다. scanf()를 통해 입력받을 때, 공백을 두어 구분하면 되기 때문이다. 문제는 출력이다. 이 문제에서 정해준 문자열의 최대값은 20이고 반복의 최댓값은 8이다. 그럼 처음부터 20 * 8짜리의 배열을 만들필요가 있을까? 나는 그렇게 생각하지 않았다. 그저 출력만 하면 되기 때문이다. 다음은 내가 작성한 코드이다.
#include <stdio.h>
#define SIZE 20
int main(void) {
char input[SIZE];
int num;
int test_size;
scanf("%d", &test_size);
for (int i = 0; i < test_size; i++) {
scanf("%d %s", &num, input);
for (int i = 0; input[i]; i++) {
for (int j = 0; j < num; j++)
printf("%c", input[i]);
}
printf("\n");
}
return 0;
}
3. 결어
언제나 말하지만, 내가 작성하는 코드는 정답이 아니다. 결과를 저장하는 문자열을 만들고 그 문자열에 출력하는 것도 하나의 방법이다. 만약 그 문자열을 따로 다뤄야 한다면 당연히 이런 방법이 더 우선적이다. 다만, 결과적으로 옳으며 조금 간단한 코드가 있다면 나는 간단한 방법을 사용하는 것이 좋다고 생각한다. 적어도 소중한 메모리는 괴롭히지 않기 때문이다.
반응형
'programming > 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘] 2941번 - 크로아티아 알파벳 (0) | 2020.06.29 |
---|---|
[백준 알고리즘] 1157번 - 단어공부 (strupr() 함수) (0) | 2020.06.27 |
[백준 알고리즘] 10809번 - 알파벳 찾기 (0) | 2020.06.24 |
[백준 알고리즘] 11720번 - 숫자의 합 (0) | 2020.06.24 |
[백준 알고리즘] 1065번 - 한수 (0) | 2020.06.21 |