티스토리 뷰

카테고리 없음

2857 세로읽기 (정올)

rectified 2024. 12. 25. 01:47

 

풀이 생각 과정

#include <iostream>
using namespace std;

int main(){
    char arr[30][30];
    for (int j = 1; j <= 15; j++){
    for (int i = 1; i <= 5; i++){    
            if (arr[i][j] == ' '){
                continue;
            }
            cin >> arr[j][i];
        }
    }

    for (int j = 1; j <= 15; j++){
        for (int i = 1; i <= 5; i++){
        cout << arr[i][j];
    }
    }
}

처음에는 단어를 받는 방법을 Aa0Ff, Bb1Gg 이런식으로 저장하고 공백이 생기면 무시하라 했지만, 저장의 방법이 잘못됬고, memset이 없어서 arr[i][j] 가 ' ' 로 지정됬는지 확인도 안됨.

 

따라서 memset() 으로 먼저 2차원 배열을 ' '로 지정시키고,  아예 string을 가져와서 단어를 ABCDE abcde 식으로 공백을 포함한 단어를 2차원 배열에 글자 형태로 저장한 후 공백이 없는 글자들만 문제에서 원하는 대로 출력시키는 접근으로 바꿈.

 

코드

#include <iostream>
#include <cstring>
using namespace std;

int main(){
    char arr[30][30];
    memset(arr, ' ', sizeof(arr));
    for (int i = 0; i < 5; i++) { 
        string word;
        cin >> word;
        for (int j = 0; j < word.size(); j++) { 
            arr[i][j] = word[j];
        }
    }

    for (int j = 0; j < 15; j++){
        for (int i = 0; i < 5; i++){
            if (arr[i][j] != ' '){
                cout << arr[i][j];
            }
        }
    }
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함