반응형
▷ 문제 : Encryption (Medium)
▷ 해결 날짜 : 2022.08.03
▷ 소요 시간 : 30분
▷ 풀이 과정 :
문제를 요약하자면 다음과 같다.
'haveaniceday' 라는 문자열이 입력되었다면, 이 문자열의 길이는 12
그리고 암호화를 위해 길이의 제곱근을 구하고 그 제곱근은 3과 4 사이의 값을 가진다.
그럴 경우 ['have', 'anic', 'eday'] 이런식으로 배열의 길이가 3이며, 각 인덱스 별로 저장이 가능한 문자열의 길이가 4가 된다.
이제 이걸 같은 위치의 문자들을 조합해서 'hae and via ecy' 라는 암호화된 문자열을 반환해주면 된다.
▷ 구현
function encryption(s) {
// Write your code here
const std = Math.sqrt(s.length);
const [x, y] = [Math.floor(std), Math.ceil(std)];
const writtens = [];
for (let i = 0; i < s.length; i += y) {
writtens.push(s.slice(i, i + y));
}
let reWrittenStr = "";
for (let i = 0; i < y; i++) {
for (let j = 0; j < writtens.length; j++) {
const char = writtens[j];
reWrittenStr += char[i] || "";
}
reWrittenStr += " ";
}
return reWrittenStr;
}
▷ 복기 :
미디움 난이도로 책정되어 있기에 좀 어려우려나 싶었는데, 다행히 91.79%의 성공률을 보이는 문제다 보니 생각보다 쉽게 해결할 수 있었다.
반응형
댓글