[editorial] Editorial - B. URI Decoding

  • astein
    astein
    • URI Decoding
    • Submissions: 100, accepted 37
    • Fast Submission: Children's Playground (11분)
    • AC Ratio: 37.00%
    • Writer: LIBe

      간단한 스트링 문제였음에도 불구하고, 많은 분들이 낚이셔서 행복해하던 Writer의 모습이 생생하네요(절대로 행복해하지 않았습니다. 다만 A번보다 많은 팀이 문제를 푸셔서 기분은 좋았지요 :) - Writer주 )

      앞에서부터 캐릭터를 살펴보면서, "%"가 나오면 그 뒤에 따라 나오는 두 자리의 코드를 확인하여 문제에서 써 있는 특별한 코드라면 바꿔주는 식으로 하면 됩니다. 또한 "%" 이후에 나오는 다음 글자의 경우 반드시 2이기 때문에 이를 무시하고 "%"이후의 2번째 문자에 대해서 처리해줄 경우 좀 깔끔하게 구현할 수 있습니다. 마지막으로 변환문자열에 대해 원문자로 매핑을 해주는 테이블을 만들어서 구현할 경우 귀찮은 조건문 노가다를 벗어날 수 있습니다. 자세한 구현 방법은 아래 첨부된 소스코드를 참고해주세요.

    이와 다른 방법으로 string에서 replace method와 같이 임의의 문자열을 바꿔주는 경우 다음과 같은 경우를 처리하지 못하는 경우가 있기 때문에 주의하여 구현을 해야합니다.

    %2525
    
    #include <stdio.h>
    #include <string.h>
    int main() {
        char ascii[128];
        ascii['0'] = ' ';
        ascii['1'] = '!';
        ascii['4'] = '$';
        ascii['5'] = '%';
        ascii['8'] = '(';
        ascii['9'] = ')';
        ascii['a'] = '*';
        char s[100];
        int tn, sz, i;
        scanf("%d", &tn);
        while(tn--) {
            scanf("%s", s);
            sz = strlen(s);
            for(i=0;i<sz;++i) {
                if(s[i]=='%') {
                    i += 2;
                    printf("%c", ascii[s[i]]);
                }
                else {
                    printf("%c", s[i]);
                }
            }
            printf("\n");
        }
    }
    
    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    15년 전
1개의 댓글이 있습니다.
  • soyoja
    soyoja

    이 문제도 풀어보세요... B 번이 URI Decoding 이였다면 아래 문제는 URI Encoding... ^^
    http://acm.pku.edu.cn/JudgeOnline/problem?id=3650


    15년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.