본문 바로가기
Algorithm/문제풀이

[HackerRank] Encryption (Medium) by javascript

by 썸머워즈 2022. 8. 3.
반응형

▷ 문제 : Encryption (Medium)

 

Encryption | HackerRank

Encrypt a string by arranging the characters of a string into a matrix and printing the resulting matrix column wise.

www.hackerrank.com

▷ 해결 날짜 : 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%의 성공률을 보이는 문제다 보니 생각보다 쉽게 해결할 수 있었다.

반응형


댓글

TOP