[PI] 원주율 외우기
PS/종만북2018. 4. 15. 00:27
[PI] 원주율 외우기 : https://algospot.com/judge/problem/read/PI
### DP ###
< 소스코드 >
pi(i) : i 번째 인덱스에서 시작하는 난이도의 최소 합.
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #include <stdio.h> #include <string.h> #define INF 1e9 char p[10001]; int len, d[10001]; int min(int a, int b) { return a < b ? a : b; } int isSame(int s, int cnt) { for(int i=s; i<s+cnt-1; i++) if(p[i] != p[i+1]) return 0; return 1; } int isInc(int s, int cnt) { for(int i=s; i<s+cnt-1; i++) if(p[i]+1 != p[i+1]) return 0; return 1; } int isDec(int s, int cnt) { for(int i=s; i<s+cnt-1; i++) if(p[i]-1 != p[i+1]) return 0; return 1; } int isAlter(int s, int cnt) { if(cnt == 3) { if(p[s] == p[s+2]) return 1; } else if(cnt == 4) { if(p[s] == p[s+2] && p[s+1] == p[s+3]) return 1; } else if(cnt == 5) { if(p[s] == p[s+2] && p[s+2] == p[s+4] && p[s+1] == p[s+3]) return 1; } return 0; } int isSeq(int s, int cnt) { int diff = p[s+1] - p[s]; for(int i=s; i<s+cnt-1; i++) if(p[i]+diff != p[i+1]) return 0; return 1; } int getScore(int s, int cnt) { if(isSame(s, cnt)) return 1; if(isInc(s, cnt) || isDec(s, cnt)) return 2; if(isAlter(s, cnt)) return 4; if(isSeq(s, cnt)) return 5; return 10; } int pi(int s) { int k, ret = INF; if(s == len) return 0; if(s > len) return INF; if(d[s]) return d[s]; for(int i=3; i<=5; i++) { k = getScore(s, i); ret = min(ret, pi(s+i)+k); } return d[s] = ret; } int main() { int tc; scanf("%d", &tc); while(tc--) { scanf("%s", p); len = strlen(p); memset(d, 0, sizeof(d)); printf("%d\n", pi(0)); } return 0; } | cs |
>> isSame() 등의 함수에서 for 문의 조건식을 s+cnt-1 로 해야했는데, 계속 cnt-1 로 해서 시간을 많이 소비했다..ㅜ
'PS > 종만북' 카테고리의 다른 글
[TRIPATHCNT] 삼각형 위의 최대 경로 수 세기 (0) | 2018.04.15 |
---|---|
[TILING2] 타일링 (0) | 2018.04.15 |
[LIS] 최대 증가 부분 수열 (0) | 2018.04.13 |
[TRIANGLEPATH] 삼각형 위의 최대경로 (0) | 2018.04.10 |
[PICNIC] 소풍 (0) | 2018.04.09 |