ENCODING 문제 시간초과가 계속 발생하는데 원인을 못찾고 있습니다. 도와주세요. rapguy 안녕하세요. DECODE 문제는 금방 풀었는데, ENCODING 문제에서 시간초과가 나오는데 제 눈으로는 왜 시간초과가 나오는지 찾지 못하고 있어서 도움요청드립니다. 복잡한 문제도 아닌데 원인을 못찾겠습니다.TT https://algospot.com/judge/problem/read/ENCODING #include <stdio.h> #include <string.h> using namespace std; char inString[(21 * 21) / 5 + 1]; char outStrMap[21][21 + 1]; int outMap[21][21], out[21 * 21]; int main() { // if(freopen("infile_encoding.txt", "r", stdin) == NULL) return 0; int T, R, C, TC; scanf("%d", &T); TC = 1; while(T--) { scanf("%d %d ", &R, &C); gets(inString); int inLen = strlen(inString); int num, index = 0; for(int i = 0; i < inLen; i++, index += 5) { if(inString[i] == ' ') num = 0; else num = inString[i] - 0x40; out[index] = (num & 0x10) >> 4; out[index + 1] = (num & 0x8) >> 3; out[index + 2] = (num & 0x4) >> 2; out[index + 3] = (num & 0x2) >> 1; out[index + 4] = num & 0x1; } for(int y = 0; y < R; y++) { for(int x = 0; x < C; x++) outStrMap[y][x] = '0'; outStrMap[y][C] = 0; } memset(outMap, -1, sizeof(outMap)); int direction = 0; int i, cur_x = 0, cur_y = 0; index = 0; while(index < inLen * 5) { if(direction == 0) { for(i = 0; cur_x + i < C && outMap[cur_y][cur_x + i] == -1; i++) { outMap[cur_y][cur_x + i] = out[index++]; if(outMap[cur_y][cur_x + i] == 1) outStrMap[cur_y][cur_x + i] = '1'; } direction = 1; cur_x = cur_x + i - 1; cur_y++; } else if(direction == 1) { for(i = 0; cur_y + i < R && outMap[cur_y + i][cur_x] == -1; i++) { outMap[cur_y + i][cur_x] = out[index++]; if(outMap[cur_y + i][cur_x] == 1) outStrMap[cur_y + i][cur_x] = '1'; } direction = 2; cur_y = cur_y + i - 1; cur_x--; } else if(direction == 2) { for(i = 0; cur_x - i >= 0 && outMap[cur_y][cur_x - i] == -1; i++) { outMap[cur_y][cur_x - i] = out[index++]; if(outMap[cur_y][cur_x - i] == 1) outStrMap[cur_y][cur_x - i] = '1'; } direction = 3; cur_x = cur_x - i + 1; cur_y--; } else if(direction == 3) { for(i = 0; cur_y - i >= 0 && outMap[cur_y - i][cur_x] == -1; i++) { outMap[cur_y - i][cur_x] = out[index++]; if(outMap[cur_y - i][cur_x] == 1) outStrMap[cur_y - i][cur_x] = '1'; } direction = 0; cur_y = cur_y - i + 1; cur_x++; } } printf("%d ", TC++); for(int y = 0; y < R; y++) printf("%s", outStrMap[y]); printf("\n"); } return 0; } 10년 전
1개의 댓글이 있습니다. Being 음... 문제에 잘 드러났는지는 모르겠습니다만 "text string"의 길이가 0일 수도 있습니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
rapguy
안녕하세요. DECODE 문제는 금방 풀었는데, ENCODING 문제에서 시간초과가 나오는데 제 눈으로는 왜 시간초과가 나오는지 찾지 못하고 있어서 도움요청드립니다.
복잡한 문제도 아닌데 원인을 못찾겠습니다.TT
https://algospot.com/judge/problem/read/ENCODING
10년 전