<문제>
https://www.acmicpc.net/problem/5426
첫번째 풀이
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main() {
int test, num = 0, i,j,k;
char letter[10000];
for (scanf("%d", &test);test+1;test--) {
for (i = 0;;i++) {
scanf("%c", &letter[i]);
if (letter[i] == '\n') {
letter[i] = '\0';
break;
}
}
num = sqrt(i);
for (k = 1; k <= num; k++) {
for (j = num-k; j <= num*num; j+=num) {
printf("%c", letter[j]);
}
}
printf("\n");
}
}
실행하면 맞게나옴. 근데 찝-찌입. + 백준 50%정도에서 틀림
** testcase 실행이 1이 덜나옴. 왜지?
5입력해도 4번만 실행됨. 결굴 찝찝하게 입력한것보다 한번 더 실행하게 했지만 ;; 답은 당연히 틀리다고함.
-> 정확히는 처음 반복문 실행에서 이전 코드들은 전부 무시하고 printf("/n"); 만 실행됨 왜인지 이유 아직도 못찾음.
다시 풀어보기 (1/24) -->new!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int getlen(char *s) {
int i;
for (i = 0; *s != '\0'; s++,i++);
return i;
}
int main() {
int test, num = 0,j,k,n;
char letter[10001];
scanf("%d", &test);
while (test--) {
scanf("%s", letter);
num = sqrt(getlen(letter));
for (k = 1; k <= num; k++) {
for (j = num-k,n=0; n<num; j+=num,n++) {
printf("%c", letter[j]);
}
}
printf("\n");
}
}
아예 num을 구하는 코드를 getline으로 아예 원소개수를 구하는 함수를 추가함.
testcase부분도 정상적으로 돌아옴
마지막 출력하는 부분도 더 정확한 반복문으로 고쳐주었음
위 코드 뭐가 틀렸는지 아직 이유 정확히 못찾음. --------------> 이유 찾을 필요 있음.
..
'⌨️ Algorithm > C' 카테고리의 다른 글
1/14 [C] 백준 1924번 - 2007년 (0) | 2022.01.24 |
---|---|
1/12 [C] 백준 12790번 - Mini Fantasy War (0) | 2022.01.24 |
1/7 [C언어] 백준 23292번 - 코딩 바이오리듬 (0) | 2022.01.07 |
1/6 [C] 백준 3076번 - 상근이의 체스판 (0) | 2022.01.06 |
1/6 [C] 백준 1440번 - 타임머신 (0) | 2022.01.06 |
댓글