문제 출처: https://algospot.com/judge/problem/read/URI
1. 코드
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
int t;
cin >> t;
while (t--)
{
string arr;
cin >> arr;
for (int i = 0; i < arr.length(); i++)
{
if (arr[i] == '%' && arr[i + 1] == '2')
{
switch (arr[i + 2])
{
case '0':
cout << " ";
break;
case '1':
cout << "!";
break;
case '4':
cout << "$";
break;
case '5':
cout << "%";
break;
case '8':
cout << "(";
break;
case '9':
cout << ")";
break;
case 'a':
cout << "*";
break;
default:
break;
}
i += 2;
}
else cout << arr[i];
}
cout << endl;
}
}
(실행)
2. 풀이
문자열을 입력받고 문자열 요소들 중 %를 인식하고 다음 글자가 2를 인식한다면 문제에 나와있는 표중 해당되는 글자가 포함된다면 해당 표에 표시된 글자를 출력하고 3글자 i의 값을 증가시켜서 이미 3글자를 읽은 것으로 처리한다. 만약 %를 인식하지 못했다면 해당 문자열의 요소를 출력한다.
int t;
cin >> t;
while (t--)
우선은 테스트 회수를 입력하고 그 횟수만큼 반복한다.
if (arr[i] == '%' && arr[i + 1] == '2')
{
switch (arr[i + 2])
{
case '0':
cout << " ";
break;
case '1':
cout << "!";
break;
case '4':
cout << "$";
break;
case '5':
cout << "%";
break;
case '8':
cout << "(";
break;
case '9':
cout << ")";
break;
case 'a':
cout << "*";
break;
default:
break;
}
i += 2;
}
문자열 중 표에 해당하는 3글자가 존재한다면 표에 명시된 글자를 출력한 뒤 i의 값을 증가시켜서 읽은 것 처리한다.
else cout << arr[i];
}
cout << endl;
}
}
만약 %가 인식안됬다면 바로 출력한다. 문자열이 전부 출력되면 줄바꿈을 해준다.
'컴퓨터 > 알고스팟 알고리즘' 카테고리의 다른 글
알고스팟 알고리즘: WEIRD [C++] (0) | 2021.05.24 |
---|---|
알고스팟 알고리즘: XHAENEUNG [C++] (0) | 2021.05.23 |
알고스팟 알고리즘: HOTSUMMER [C++] (0) | 2021.05.11 |
알고스팟: CONVERT [C++] (0) | 2021.05.09 |
알고스팟 알고리즘: MISPELL [C++] (0) | 2021.05.07 |