No older revisions available
No older revisions available
1. 상규, 재동 ¶
- STL 사용하면 쉽게 풀 수 있다는 걸 알고 있었지만 일부러 STL을 사용하지 않았습니다. 알고리즘적으로 머리를 쓰는 걸 훈련하기 위해...^^
~cpp
#include <iostream>
#include <string>
using namespace std;
int numOfData;
string inputData[10];
int outputData[10];
string pattern;
int getIndex(char c)
{
int index;
index=pattern.find_first_of(c);
pattern = pattern.substr(0, index) + pattern.substr(index + 1);
return index;
}
void input()
{
cin >> numOfData;
for(int i=0;i<numOfData;i++)
{
cin >> inputData[i];
}
}
void process()
{
for(int i=0;i<numOfData;i++)
{
int index;
int addNumber = 40320;
pattern = "abcdefgh";
for(int j=0;j<8;j++)
{
index = getIndex(inputData[i][j]);
addNumber /= (8-j);
outputData[i] += addNumber * index;
}
outputData[i]++;
}
}
void output()
{
for(int i=0;i<numOfData;i++)
{
cout << outputData[i] << endl;
}
}
void main()
{
input();
process();
output();
}
- 처음 딱 보고, 앗 재귀다--; 이러고 막 고민하다가. 문득 STL 공부하다가 본 수열 제네레이터가 생각남
- 10분만에 끝남
- 비쥬얼 어시스트가 없었다면 수열 제네레이터 어떻게 쓰는지 몰랐을지도 --;
~cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int checkPerm(string& str);
int main()
{
string given;
cin >> given;
cout << checkPerm(given);
return 0;
}
int checkPerm(string& given)
{
string str = "abcdefgh";
for(int i = 1 ; i <= 40320 ; ++i)
{
if(str == given)
return i;
next_permutation(str.begin(), str.end());
}
}