BAEKJOON

[백준] 2675 - 문자열 반복

멍정 2022. 11. 22. 18:50

알고 보면 굉장히 단순한데

c언어를.. 코딩 자체를 오랜만에 하니까

입력 어떻게 받았는지 다 까먹고..

vscode에서 그냥 입력이 되길래 그냥 했다가 삽질 왕창하고

입력 어떻게 받아오는지 찾아봐서 해결했습니다..

입출력 정보가 이렇게 나와있어서..

예제에서 저렇게 나와있어서..

한 번에 전부 입력받고 나머지 출력하는건가 싶어서 2차원 배열도 갔다가 포인터도 갔다가..

입력을 scanf("%d %s", 변수들)로 받고 해결했습니다..

애초에 띄어쓰기로 입력 받는다고 했는데

vscode는

scanf("%c", i);

scanf("%s", t);

이렇게 적고 띄어쓰기 하면 똑같이 읽어서.. 아니지 문제를 똑바로 읽지 않은게 잘못이죠 엉엉

그래서 자꾸 엔터로 쓴 공백을 읽어와서..

fflush(stdin); 도 찾아보고

 

scanf에서 공백을 읽어올 때 해결하는 방법은 이 블로그를 봤는데

https://velog.io/@mttw2820/scanfc%EC%9D%98-%EB%AC%B8%EC%A0%9C

scanf("%c")를 2번 쓰면 다음으로 넘어갈 때 쓰는 엔터, 스페이스바까지 읽어버리니까

입력 버퍼값을 지워버리면 된다고 하네요

*저 블로그에서는 gcc는 안된다고 했는데 vscode gcc 환경에서 성공함!

 

다른 블로그에서도 말하고 있지만 요점은 반복문의 활용!

다들 문자열의 길이를 사용해서 반복의 갯수를 지정하던데

전 그냥.. 맨 처음에 생각난게 배열이라 NULL값이 나올 때까지 while문으로 돌렸습니다.

결과적으로 작동은 같으니까!

#include <stdio.h>
int main (void)
{
    char inputValue[20] = {};

    int testCase;
    int repeat;
    scanf("%d", &testCase);
   
    for(int i = 0; i < testCase; i++)
    {
        scanf("%d %s", &repeat, inputValue);
        int count = 0;
        while (inputValue[count])
        {
            for(int q = 0; q < repeat; q++){
                printf("%c", inputValue[count]);
            }
            count++;
        }
       printf("\n");
    }

}

아무튼.. 별거 아닌데 시간 오래 잡아먹어서 슬프고..

요즘 변수명을 정성껏 지으려고 했는데

암만 생각해도 좋은게 생각이 안나서

역시 다른 사람들의 예제를 많이 보는게 좋겠다..~

가 결론입니다.

'BAEKJOON' 카테고리의 다른 글

[백준] 1157 - 단어 공부  (0) 2022.11.24
[백준] 10809 - 알파벳 찾기  (0) 2022.11.21
[백준] 4673 - 셀프 넘버  (0) 2022.09.18