오보에블로그
단어순서 뒤집기 본문
백준 12605번 단어순서 뒤집기
/*
문제
스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.
입력
첫 행은 N이며, 전체 케이스의 개수이다.
N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.
N = 5
1 ≤ L ≤ 25
출력
각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.
*/
/*
해결방법
예시를 들어서 설명하면,
Let input: i like you Yoong
<arr>
0 1 2 3
0 i l y Y
1 i o o
2 k u o
3 e n
4 g
arr[3]-arr[0] 순서로 출력
*/
++문자열 초기화는 char arr[n][m] = {0, }; ---->> n*m 배열 0으로 초기화
소스코드
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 34 35 36 37 38 39 40 41 | #include <stdio.h> #include <string.h> int main(void){ int c; int row =0, column =0; int casenumber; int print_casenumber=1; scanf("%d",&casenumber); getchar(); while(casenumber--){ column = 0;/* reset column,row and arr */ row = 0; char arr[26][26] = {0,}; while((c=getchar()) != '\n' && (c != EOF)){ if(c == ' '){ column++;/*c가 빈칸이면,그 후에 다음 단어 를 받기 위해 column++, row =0 */ row =0; } else{ arr[column][row] =c; row++; } } for(int i = column;i>=0; i--){ for(int j = 0; j<strlen(arr[i]);j++){ if(i == column && j == 0){ printf("%s%d%s","Case #",print_casenumber++,": "); } printf("%c",arr[i][j]); } if(i != 0) printf(" "); } printf("\n"); } return 0; } | cs |
실행결과
-입력값
3 this is a test foolbar all your baseCase |
-출력값
Case #1: test a is this Case #2: foolbar Case #3: base your all |
The source of this problem is Baekjoon Online Judge(http://www.acmicpc.net/)
'C++ & C# > C++' 카테고리의 다른 글
1085 직사각형에서 탈출 (0) | 2017.11.20 |
---|---|
Bitwise Operators and Enumeration Types (0) | 2017.11.19 |
Makefile을 이용하여 한꺼번에 컴파일하기 (0) | 2017.10.26 |
팰린드롬? (0) | 2017.10.24 |
문자열반복 (0) | 2017.10.23 |