-
[백준/BOJ] 10798번 : 세로읽기 _C언어알고리즘/백준(BOJ) 2022. 2. 13. 13:11728x90반응형
https://www.acmicpc.net/problem/10798
>문제
>접근방법
2차원 배열로 입력받고 반복문으로 인덱스 변수만 바꿔서 출력
>알고리즘
1. 2차원 배열로 입력받기
2. [i][j]이면 j를 기준으로 for문1, i를 기준으로 for문2 진행
3. for문2가 공백일 경우 continue
>코드
(삽질ver)
#include <stdio.h> #include <string.h> #include <ctype.h> /* 알고리즘 조건: 5줄 15글자 이하의 글자, 세로로 읽되 공백은 무시, 출력도 공백 없이 1. 2차원 배열에 입력받기 2. [i][j]이면 j를 기준으로 for문1, i를 기준으로 for문2 진행 3. for문2가 공백일 경우 continue */ char str[10][50]; int i, j, k; int main(void){ for(i=0; i<5; i++){ scanf("%s", str[i]); } for(k=0; k< 15; k++){ for(j=0; j<5; j++){ if(isalpha(str[j][k])){ printf("%c", str[j][k]); } else if(isdigit(str[j][k])){ printf("%c", str[j][k]); } else continue; } } return 0; }
(제출ver)
#include <stdio.h> #include <string.h> char str[10][50]; int i, j, k; int main(void){ for(i=0; i<5; i++){ scanf("%s", str[i]); } for(k=0; k< 15; k++){ for(j=0; j<5; j++){ if(str[j][k] != 0){ printf("%c", str[j][k]); } else continue; } } return 0; }
>결과
>결론
삽질ver를 보면 영문과 숫자를 구분하는 함수를 썼는데, 사실 숫자든 문자든 다 문자 타입으로 입력받아서 ctype.h 라이브러리를 쓴 isalpha 라던지 isdigit은 사용하지 않아도 됐었다. 그걸 생각 못하고 처음에 else if 에서 isdigit일때 프린트를 %d로 했더니 출력으로 숫자값이 아스키코드값으로 나오길래 그때 깨달았다. 그래서 %c로 바꾸고 보니 ctype 헤더가 필요 없었군 하는 생각에 미쳤다. 그래도 ctype.h 라는 라이브러리가 있다는걸 알았으니유익한 삽질이었다.
LIST'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ] 3986번 : 좋은 단어 _C/C++ (0) 2022.02.15 [백준/BOJ] 10773번 : 제로 _C/C++ (0) 2022.02.14 [백준/BOJ] 9012번 : 괄호 _C언어 (0) 2022.02.13 [백준/BOJ] 1652번 : 누울 자리를 찾아라 _C언어 (0) 2022.02.10 [백준/BOJ] 5555번 : 반지 _C언어 (0) 2022.02.04