본문 바로가기

자료구조+알고리즘/Programmers

[프로그래머스_Lv.1] 바탕화면 정리 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

[풀이]

 

x, y 좌표를 어떻게 구할까 ? 를 먼저 고민해봐야한다.

(바탕화면)좌표에서 여러개의 파일이 있다고 생각했을 때, 모두 아우르는 범위를 알려면

드래그의 시작점은 젤상단의 왼쪽 이여야 하고 

드래그의 끝점은 젤하단의 오른쪽이여야 한다.

 

주의할점은 이 문제에서 x축 ,y축 반대방향으로 간다

 

1. 이중for문 돌려서 좌표 마다 순회한다 

2. '#' 이 나오면 x 좌표 배열에 (원래는 y좌표) j를 넣어주고 y 좌표 배열에 (원래는 x좌표) i를 넣어준다

3. result가( x최솟값, y최솟값 ) + (x최댓값+1 , y최댓값+1) 이므로 Math.min, Math.max 구해서 각각의 앞의 숫자 들고온다.

 

 

[코드]

function solution(wallpaper) {
    const X = []
    const Y = []
    for(let i = 0; i < wallpaper.length; i++){
        for(let j = 0; j< wallpaper[i].length; j++) {
            if(wallpaper[i][j] === '#'){
                X.push(j)
                Y.push(i)
            }
        }     
    }

    let answer = [Math.min(...Y),Math.min(...X),Math.max(...Y)+1,Math.max(...X)+1]
    return answer;
}

 

728x90
반응형