(Array) 배열에 들어 있는 문자열 요소를 섞어보자 Javascript

cptkuk91·2022년 8월 12일
1

Algorithm

목록 보기
58/161
post-custom-banner

문제

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

주의 사항

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

입출력 예시

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

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

풀이

function solution (arr) {
	let result = "";
    
    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] += str[j];
            }
        }
    }
    
    for(let k = 0; k < temp.length; k++){
    	result += temp[k];
    }
    
    return result;
}

풀이법

다양한 문제 풀이법이 있겠지만, 위 코드를 통했을 때는 새로운 배열을 선언해, 그 안에다가 문자열을 하나씩 넣어둘 수 있냐 없냐로 풀이가 가능하냐 못하냐로 나뉩니다.

["hello", "world"] 로 예시를 볼 때, 첫 for문에서 "hello"가 str에 담깁니다.
선언된 배열 temp는 현재 아무것도 없는 상태이기 때문에 temp.length는 for문(j)에서 돌 때, temp.length === 0 이기 때문에 temp.push(str[j])를 통해 첫 글자 h를 넣어줍니다.
for문(j)를 끝내고 다시 for문(i)로 갑니다. 다시 "world"를 push 해줍니다. 이때 for문(j)는 다시 0부터 돌기 때문에 temp.length === 0이 될 수 없습니다. 이미 h가 들어있기 때문입니다. 따라서 temp[j] += str[j]를 통해 w를 넣어줍니다. 그럼 h,w가 들어 있는 상태입니다.

이후 문자열 result에 temp.length를 순서대로 넣어주면 문제의 요구사항과 같이 출력이 가능합니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글