Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Archives
Today
Total
관리 메뉴

pizzaroot

23629번: 이 얼마나 끔찍하고 무시무시한 수식이니 본문

공부/알고리즘

23629번: 이 얼마나 끔찍하고 무시무시한 수식이니

pizzaroot 2021. 11. 21. 17:51

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