ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BOJ]백준 11718번: 그대로 출력하기
    Problem Solving/BOJ(백준) 2019. 2. 6. 21:32

    문제 : 입력 받은 대로 출력하는 프로그램을 작성하시오.


    입력조건: 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.


    출력: 입력받은 그대로 출력한다.



    printf와 scanf만 사용하는 간단한 문제 같지만, 의외로 한번에 맞히는 사람이 드물다

    알고리즘 문제풀이에 이용되는 스킬들을 알고있으면 바로 풀 수 있는 간단한 문제


    한 줄이 100글자를 넘지 않는 입력조건을 고려해주어 문자열 배열 크기를 설정한다

    (참고로 입력 조건 중에서는 코드를 짤 때 고려해주어야 하는 조건과, 아닌 조건이 존재한다)

    1
    2
    3
    4
    5
    #include <cstdio>
    int main() {
        char arr[101];
        return 0;
    }
    cs


    일단 줄 수가 명시되어 있지 않고, 입력을 받는대로 계속 출력을 해주어야 한다

    입력이 들어오면 계속 출력을 해주기 위해 while문에 조건으로 입력이 끝날 때 까지를 의미하는 EOF를 사용해준다.


    1
    2
    3
    4
    5
    6
    #include <cstdio>
    int main() {
        char arr[101];
        while(scanf("%s", arr) != EOF){}
        return 0;
    }
    cs


    또한 이 문제에서는 공백을 포함해서 한 줄을 의미하는데, 일반적인 scanf로는 공백을 받을 수 없으므로, \n(개행문자)를 제외하고 전부 입력으로 받기 위해 조건을 추가해준다.

    그리고, 여러 줄을 받기 위해서 한 줄을 입력할 때마다 버퍼때문에 글자가 먹히는걸 방지하기 위해 공백을 추가해준다


    1
    2
    3
    4
    5
    6
    #include <cstdio>
    int main() {
        char arr[101];
        while(scanf(" %[^\n]s", arr) != EOF){}
        return 0;
    }
    cs



    마지막으로, arr을 입력해줄 때마다 그 문장을 출력해주기만 하면 끝이다


    1
    2
    3
    4
    5
    6
    7
    #include <cstdio>
    int main() {
        char arr[101];
        while(scanf(" %[^\n]s", arr) != EOF)
            printf("%s\n", arr);
        return 0;
    }
    cs


Designed by Tistory.