어흥
[해커랭크] Encryption (C++) 본문
728x90
반응형
문제링크: www.hackerrank.com/challenges/encryption/problem
1. 주의할 점
- 미리 9*9배열 Arr[][]을 만들어놓는다(최대 길이가 81이므로)
- 배열의 가로와 세로를 잘 구하도록 한다
2. 구현
- 입력받은 문자의 공백을 모두 제거한 문자열을 Str에 저장한다
- Math.h의 내장함수인 Ceil과 Floor 함수를 통해 Row, Col을 구한다(단, Row*Col < Str의 길이일 경우, Row++한다)
- Str의 길이만큼 Arr[][] 배열에 값을 저장한다
- 배열을 위에서 아래로 읽은 값을 Result 문자열에 저장한 이후, 오른쪽으로 넘어가기전에 줄띄움을 추가해준다
char arr[9][9];
// Complete the encryption function below.
string encryption(string s) {
string str = "", result = "";
int len = s.size();
for (int i = 0; i < len; i++) {
char c = s[i];
if ('a' <= c && c <= 'z') str += c;
}
len = str.size();
int row, col;
row = floor(sqrt(len));
col = ceil(sqrt(len));
if (row*col < len) row++;
int cnt = 0;
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
arr[i][j] = 'A';
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = str[cnt++];
if (cnt == len) break;
}
if (cnt == len) break;
}
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
if (arr[j][i] == 'A') break;
else result += arr[j][i];
}
result += " ";
}
return result;
}
728x90
반응형
'알고리즘 > HackerRank' 카테고리의 다른 글
[해커랭크] Kruskal (MST): Really Special Subtree (C++) (0) | 2020.11.25 |
---|---|
[해커랭크] Breadth First Search: Shortest Reach (C++) (0) | 2020.11.24 |
[해커랭크] Queen's Attack II (C++) (0) | 2020.11.23 |
[해커랭크] Roads and Libraries (C++) (0) | 2020.11.20 |
[해커랭크] Forming a Magic Square (C++) (0) | 2020.11.19 |
Comments