pizzaroot
23629번: 이 얼마나 끔찍하고 무시무시한 수식이니 본문
https://www.acmicpc.net/problem/23629
그냥 문자열 귀찮은 구현 좀 하면 됨 ㅋㅋ
char *digits[10];
void assign() {
digits[0] = "ZERO";
digits[1] = "ONE";
digits[2] = "TWO";
digits[3] = "THREE";
digits[4] = "FOUR";
digits[5] = "FIVE";
digits[6] = "SIX";
digits[7] = "SEVEN";
digits[8] = "EIGHT";
digits[9] = "NINE";
}
int main() {
assign();
return 0;
}
일단 다행히도 앞에 세 개가 같은 서로 다른 두 숫자는 없다 ㅋㅋ
그래서
#include <stdio.h>
#include <string.h>
char s[100002];
int main() {
scanf("%s", s);
int pos = 0, len = strlen(s);
while (pos < len) {
}
return 0;
}
대충 이런 식으로 해볼 예정이다 ㅋ
#include <stdio.h>
#include <string.h>
char s[100002], *digits[10];
int main() {
int pos = 0, len = strlen(s);
while (pos < len) {
for (int i = 0; i < 10; i++) {
if (!strncmp(digits[i], s + pos, strlen(digits[i]))) {
pos += strlen(digits[i]);
break;
}
}
}
return 0;
}
이렇게 한 다음에 숫자가 확인되면 그때마다 출력을 하려고 했는데 생각해보니까 출력하다가 알고 보니까 잘못된 문자열이면 Madness! 를 출력해야 되기 때문에 마지막에 출력하도록 따로 문자 배열을 만들어서 저장했다 ㅇㅇ
근데 조건은 또 왜 이렇게 많아 ㄹㅇㅋㅋ
주의할 조건은 연산자가 연속해서 오면 Madness! 를 출력해야 한다는 점이다 ㅋㅋ
아 그리고 이건 나만 해당되는지 모르겠는데 식의 값이 0인 경우도 있으니까 그렇게 알면 됨 ㅋㅋ
솔직히 이 문제는 구현만 하고 조건이랑 특수 케이스만 잘 따지면 되기 때문에 더 이상 할 말이 없다 ㅋ
그럼 ㅅㄱㅂㅇ
'공부 > 알고리즘' 카테고리의 다른 글
23630번: 가장 긴 부분 수열 구하기 (0) | 2021.11.22 |
---|---|
1918번: 후위 표기식 (0) | 2021.11.21 |
16953번: A → B (0) | 2021.11.21 |
23628번: 악마의 연차 계산기 (0) | 2021.11.21 |
23627번: driip (0) | 2021.11.21 |
Comments