문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
메모
정답
function solution(wallpaper) {
const xPositions = [];
const yPositions = [];
// 파일의 위치에 해당하는 좌표를 x, y별로 모은다
wallpaper.map((item, xIndex) => {
const tmp = item.split("");
tmp.map((item, yIndex) => {
if (item === "#") {
xPositions.push(xIndex);
yPositions.push(yIndex);
}
});
});
// 가장 작은 x좌표, 가장 작은 y좌표는 드래그 시작점(왼쪽 위)을 나타낸다
// 가장 큰 x좌표 + 1, 가장 큰 y좌표 + 1은 드래그 끝점(오른쪽 아래)을 나타낸다
// 드래그 끝점 좌표의 x, y에 각각 1을 더하는 이유:
// #은 점이 아니라 파일이기 때문에 면적에 속하기 때문이다
const answer = [
Math.min(...xPositions),
Math.min(...yPositions),
Math.max(...xPositions) + 1,
Math.max(...yPositions) + 1,
];
return answer;
}