프로그래머스 바탕화면 정리

0

알고리즘

목록 보기
8/8
post-thumbnail

혹시나 잘못된 개념 전달이 있다면 댓글 부탁드립니다. 저의 성장의 도움이 됩니다.

문제 설명

코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다...
바로가기


풀이한 코드

설명(수도코드)

  1. x좌표의 모음, y좌표의 모음을 담을 빈 배열을 선언한다.

  2. 입력값 wallpaper를 반복문으로 순회하며 x, y 좌표를 배열에 담는다.

    • X 좌표의 모음 -> wallpaper 요소에 #이 포함된 인덱스의 최대, 최소값
    • Y 좌표의 모음 -> wallpaper 요소에 #의 첫, 마지막 인덱스들의 최대,최소값
  3. x좌표의 모음, y좌표의 모음에서 최소, 최대값을 추출하여 반환한다.

    • 최대값에는 +1을 더하기
function solution(wallpaper) {
    const xIndex=[];
    const yIndex=[];
    
    wallpaper.forEach((el, idx)=>{
        const firstIdx = el.indexOf('#');
        const lastIdx = el.lastIndexOf('#');
        
        if(firstIdx !== -1){
            xIndex.push(idx);
            yIndex.push(firstIdx, lastIdx);
          	// firstIdx, lastIdx가 같을 수도 있으므로 if(같음) {하나만 추가} else{둘다 추가} 로 변경 가능
        }
    });
    
    return [Math.min(...xIndex), Math.min(...yIndex), Math.max(...xIndex) +1, Math.max(...yIndex) +1];
}

0개의 댓글