문제 설명
프로그래머스 lv.01 문제로 배열 형태로 제공된 데이터에서 '#'(문제 설명으론 폴더)로 표시된 부분들을 드래그 한번으로 모두 포함하는 최단거리를 구하는 문제이다.
풀이
모든 '#'을 포함 시켜야 한다고 문제 설명에 되어 있다. 이 말은 드래그를 하면 모든 '#'이 포함되어야 하기 때문에 결과는 무조건 직사각형 형태로 나올수 밖에 없다. 직사각형 형태로 나온다는 건 가장 왼쪽 윗부분과 가장 오른쪽 아랫부분의 좌표값이 문제에서 요구하는 결과물이라는 말과 같다.
즉, '#'이 있는 x,y좌표의 최댓값, 최솟값만 구해주면 쉽게 문제를 해결할 수 있다. 결과물은 아래 코드와 같다.
function solution(wallpaper) {
var answer = []; // 결과 좌표값을 담는 변수
let result = []; // #의 위치를 담는 변수
for(let i=0; i<wallpaper.length; i++){ //주어진 데이터에서 #의 위치를 찾아 result에 저장
for(let j=0; j<wallpaper[i].length; j++){
wallpaper[i][j] == '#' ?
result.push([i,j]) : ''
}
}
// 각각 x,y 좌표의 최솟값, 최댓값을 찾는다
let minX = Math.min(...result.map((data) => data[0]))
let minY = Math.min(...result.map((data) => data[1]))
let maxX = Math.max(...result.map((data) => data[0]))
let maxY = Math.max(...result.map((data) => data[1]))
// 찾은 좌표값을 answer에 저장
// 좌표값이 첫번째 값을 기준으로 저장하므로 최댓값의 경우 1을 더해줘야한다
answer.push(minX, minY, maxX+1, maxY+1)
return answer; // 결과 리턴
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.02 연습문제 영어 끝말잇기 (JavaScript) (0) | 2024.04.18 |
---|---|
[프로그래머스] Lv.02 연습문제 하노이의 탑 (JavaScript) (0) | 2024.04.15 |
[프로그래머스] Lv01 연습문제 약수의 개수와 덧셈 (JavaScript) (0) | 2024.04.14 |
[프로그래머스] Lv.01 연습문제 최소직사각형 (JavaScript) (0) | 2024.04.12 |
[프로그래머스] Lv.01 연습문제 과일 장수 (JavaScript) (0) | 2024.04.10 |