본문 바로가기

나를 성장시키는 알고리즘

빈 배열에 새로운 배열의 요소들을 순서대로 넣고싶을 때

readVertically

문제

문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.

입력

인자 1 : arr

  • string 타입을 요소로 갖는 배열

출력

  • string 타입을 리턴해야 합니다.

주의 사항

  • 각 문자열의 길이는 다양합니다.
  • 각 문자의 위치를 행, 열로 나타낼 경우, 비어있는 (행, 열)은 무시합니다.

입출력 예시

let input = [ // 'hello', 'wolrd', ]; let output = readVertically(input); console.log(output); // --> 'hweolllrod' input = [ // 'hi', 'wolrd', ]; output = readVertically(input); console.log(output); // --> 'hwiolrd'

 

 

코드


function readVertically(arr) {

   let temp =[]

   for(let i=0; i<arr.length; i++){
     let str=arr[i]
     for(let j=0; j<str.length; j++){
        if(temp.length === j ){
          temp.push(str[j]) 
        }else{
          temp[j]=temp[j]+str[j]
        }  
     }
   }
    let result =''

    for(let i=0; i<temp.length; i++){

      result=result+temp[i]
    }

    return result
}

 

# 정규식으로도 쉽게 풀이 가능

let newstr=temp.join()

return newstr.replace(/\,/g,'');

해설


1. 빈 배열을 정의한다.

2. if 빈 배열에 만약 빈 배열의 길이와 반복의 숫자가 같으면 str배열에 요소들을 넣어준다.( 이 말은 아무것도 없다면 빈 배열의 길이는 요소가 추가되기 전 i의 숫자와 같으므로 가능하다) 

3. else 기존 배열에 arr[1]은 무조건 같지 않으므로 하나씩 문자열에 넣어주면 된다.

4. 이런 배열을 이제 하나의 문자열로 바꿔주면 끝.