-
[hacker rank] Encryption알고리즘/Hacker Rank 2021. 9. 9. 13:10
풀이
문제에 나와 있는 암호화 방법대로 풀면 됩니다. 루트 값을 올림한 수와 내림한 수의 곱이 원래의 수보다 작다면 작은 쪽에 1을 더해주면 됩니다. 마지막에 각 로우의 한 글자씩만을 문자열에 담을 때는 반복문 칼럼의 인덱스가, 접근하는 문자열보다 크면 안 됩니다.
코드
string encryption(string s) { while (s.find(" ") != (size_t)-1) s.replace(s.find(" "), 1, ""); size_t length = s.size(); size_t row = floor(sqrtf(length)); size_t column = ceil(sqrtf(length)); if (row * column < length) ++row; vector<string> str; size_t start = 0; for (size_t i = 0; i < row; ++i) { str.push_back(s.substr(start, column)); start += column; } string answer = ""; for (size_t i = 0; i < column; ++i) { for (string s : str) { if (i > s.size() - 1) break; answer += s[i]; } answer += ' '; } return answer; }
'알고리즘 > Hacker Rank' 카테고리의 다른 글
[hacker rank] The grid search (0) 2021.09.10 [hacker rank] The time in words (0) 2021.09.09 [hacker rank] Organizing containers of balls (0) 2021.09.08 [hacker rank] Extra long factorial (0) 2021.09.07 [hacker rank] Climbing the leaderboard (0) 2021.09.04