URL

Programming/AlgoSpot 2014. 7. 1. 00:30

문제 정보

문제

URI (Uniform Resource Identifier) is a compact string used to identify or name resources on the Internet. Some examples of URI are below:

  • http://icpc.baylor.edu.cn/
  • mailto:foo@bar.org
  • ftp://127.0.0.1/pub/linux
  • readme.txt

When transmitting *URI*s through the Internet, we escape some special characters in *URI*s with percent-encoding. Percent-encoding encodes an ASCII character into a percent sign ("%") followed by a two-digit Hexadecimal representation of the ASCII number. The other characters are not touched in the encoding process. The following table shows the special characters and their corresponding encodings:

Special CharacterEncoded String
" "%20
"!"%21
"$"%24
"%"%25
"("%28
")"%29
"*"%2a

Note that the quotes are for clarity only.

Write a program which reverses this process.

입력

The first line of the input file will contain the number of test cases C (1C100). The following Clines will each contain a test case — which is the percent-encoded URI. Their length will be at most 80.

출력

Print one line for each test cases — the decoded original URI.

예제 입력

2
Happy%20Joy%20Joy%21
http://algospot.com/%2a

예제 출력

Happy Joy Joy!
http://algospot.com/*


210583URIwowrupicpp968B정답2ms


1.문제설명
URL

2.알고리즘
string 변환

3.소스코드
#include <stdio.h>
#include <string.h>

int main(void)
{
int Case, i;
char str[81]={0,};
scanf("%d", &Case);

while(Case--)
{
scanf("%s", str);

for(i=0;i<strlen(str);i++)
{
if(str[i]=='%'&&str[i+1]=='2')
{
if(str[i+2]=='0')
{
putchar(' ');
i+=2;
continue;
}
else if(str[i+2]=='1')
{
putchar('!');
i+=2;
continue;
}
else if(str[i+2]=='4')
{
putchar('$');
i+=2;
continue;
}
else if(str[i+2]=='5')
{
putchar('%');
i+=2;
continue;
}
else if(str[i+2]=='8')
{
putchar('(');
i+=2;
continue;
}
else if(str[i+2]=='9')
{
putchar(')');
i+=2;
continue;
}
else if(str[i+2]=='a')
{
putchar('*');
i+=2;
continue;
}

}
putchar(str[i]);
}
putchar('\n');
memset(str, 0,sizeof(str));
}

return 0;
}

4.문제후기
초! 초급문제 알고스팟 초심자용문제에 있길래 풀어봤는데 
역시 초심자용
제출횟수가 2672인데 정답횟수가 934(34%)길래 그래도 풀어볼만하겠다 싶었는데 너무쉬었음


'Programming > AlgoSpot' 카테고리의 다른 글

등산로  (0) 2014.05.28

등산로

Programming/AlgoSpot 2014. 5. 28. 00:57

문제 정보

문제

모르도르 지방의 아름다운 경치를 한 눈에 볼 수 있는 명산 오로드루인에는 길기로 유명한 등산로가 있습니다. 이 등산로는 산등성이를 따라 오르락내리락하며 구성되어 있지요. 이 등산로는 너무 길기 때문에 특수 장비(예를 들면, 절대반지 등)를 갖춘 사람이 아니라면 처음부터 끝까지 정복하기가 힘이 듭니다. 관광 자원 개척을 위해 이 등산로 중 몇 군데를 별도의 등산로로 개방하려고 합니다.

등산로에는 100미터 간격으로 표지판이 있는데, 각 표지판의 해발 고도를 측정한 자료가 있습니다. 이 때 등산로의 난이도는 등산로를 가다 만나는 표지판 중 최대 해발 고도와 최저 해발 고도의 차이입니다. 개방을 검토하고 있는 등산로의 일부가 주어질 때, 각 부분의 난이도를 계산하는 프로그램을 작성하세요.

입력

입력의 첫 줄에는 테스트 케이스의 수 C (1 <= C <= 30) 가 주어집니다. 각 테스트 케이스의 첫 줄에는 원래 등산로에 있는 표지판의 수 N (1 <= N <= 100,000)과 개방을 고려하고 있는 등산로의 수 Q (1 <= Q <= 10,000)가 주어집니다. 그 다음 줄에 N 개의 정수로 각 표지판의 해발 고도 hi 가 순서대로 주어집니다. (0 <= hi <= 20,000) 각 표지판은 입력에 주어지는 순서대로 0 번부터 N-1 번까지 번호가 매겨져 있습니다. 그 다음 Q 줄에 각 2개의 정수로 개방을 고려하고 있는 등산로의 첫 번째 표지판과 마지막 표지판의 번호 a , b (0 <= a <= b < N) 가 주어집니다.

입력 데이터의 양이 많으니 가능한 빠른 입출력 방법을 사용하시기 바랍니다.

출력

한 줄에 하나씩 개방을 고려하고 있는 각 등산로의 난이도를 출력합니다.

예제 입력

2
3 1
1 2 3
0 2
10 4
3 9 5 6 10 8 7 1 2 4 
1 6
4 7
9 9
5 8

예제 출력

2
5
9
0
7


1.문제설명
개방하려고 하는 등산로의 난이도를 구하는 문제

2.알고리즘
Max-Min

3.소스코드
#include <stdio.h>

int GetLevel(int *pArr, int start, int end)
{
int Max, Min, i;
Max=pArr[start]; Min=pArr[start];

for(i=start+1;i<=end;i++)
{
if(pArr[i]>Max)
Max=pArr[i];
if(pArr[i]<Min)
Min=pArr[i];
}

return Max-Min;
}

int main(void)
{
int Case;
int Mountain_Way,Sign_Num,Start_Num,End_Num;
int Arr[100000]={0,};

int i;

scanf("%d", &Case);
while(Case--)
{
scanf("%d %d", &Sign_Num, &Mountain_Way);
for(i=0;i<Sign_Num;i++)
{
scanf("%d", &Arr[i]);
}
while(Mountain_Way--)
{
scanf("%d %d", &Start_Num, &End_Num);
printf("%d\n", GetLevel(Arr,Start_Num, End_Num));
}

}


return 0;
}

4.문제후기
오랜만에 문제를 풀어본다. 회사에서  AlgoSpot으로 Study를 한다길래 
로그인 하고 쉬운문제를 풀어보았는데 ACM과는 다르게 문제가 한글로 되어있어 좋은거 같다. 꾸준히 풀어봐야겠다


'Programming > AlgoSpot' 카테고리의 다른 글

URL  (0) 2014.07.01