2020.코딩일지

[코플릿]Algorithm Basic-13_readVertically 본문

algorithm

[코플릿]Algorithm Basic-13_readVertically

개발하는라푼젤 2022. 8. 7. 16:37
728x90

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

 

입출력예시

더보기
//입출력예시
let input = [
  //
  'hello',
  'wolrd',
];
let output = readVertically(input);
console.log(output); // --> 'hweolllrod'

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

 

 

👻...??몇시간을 붙잡고있었는지모르겠닼ㅋㅋㅋㅋ

콘솔찍었는데도 모르겠다니.. 이런... 한참을 들여다보았고, 조금은 알것같은데 개운치않다 ㅜㅜ

굳이 철자 하나하나 쪼개놓지(split()) 않아도, 인덱스로 불러오면되는구나-

합칠때도 join()하지 않아도 += 으로 계속 넣어도 되는구나~ 

function readVertically(arr){
  let temp = [];
  for(let i=0; i<arr.length; i++){ //2단어 'hi','world'
    let str = arr[i];              //✅ str = 'hi'
    console.log('str은->',str);
    for(let k=0; k<str.length; k++){  //'hi' 2글자
      if (temp.length === k) {        //✅같으면 비었다는뜻. // ---2) temp.length=2개인데, world의 k는 0
        console.log('temp길이는->',temp.length);
        temp.push(str[k]);          //temp는-> 'h', 'i'(str[k]철자하나씩넣은거)
        console.log('temp는->',temp);
      }else {				//뭐라도 있다는 뜻이니까. 조합해서 넣어줌
        temp[k] = temp[k]+str[k]; // 'hw', 'io',...
        console.log('k값은->',k);
      }
    }
  }
  let result = '';
  for(let i=0; i<temp.length; i++){ //temp에 작업해놓은게있으니까.
    result+= temp[i]; //join안하고 for문돌려서 result에 넣넣
    console.log('result는->',result);
  }
  return result;
}


 

킹규명님의 노션: 친절한 설명도 함께:-)

//킹규명님 노션코드
function readVertically(arr) {
  let result = "";

//최대길이 먼저구하고
  let max = arr.reduce((pre, cur) => {
    if (pre.length <= cur.length) return cur;
    else return pre;
  }); 

//최대길이만큼 반복문
  for (let i = 0; i < max.length; i++) {
    check = 0;
    while (arr.length !== check) { //같으면 멈춤
      if (arr[check][i]) { //값이있으면 true, 없거나 undefined면, false
        result += arr[check][i];
      };
      check++;
    }
  }
  return result;
}
Comments