[알고리즘 코드카타] 바탕화면 정리
2024. 11. 9. 00:39ㆍ[Node.js_6기 본캠프 TIL]
예시를 보고 더 혼란스러웠던 문제이다. (x, y) 순서대로 result가 나와야 할 것 같은데 (y, x) 순서대로 result가 나와야 해서 괜히 더 헷갈렸던 것 같다.
이중for문으로 좌표를 구하고, x의 최대/최소값과 y의 최대/최소값만 구한 뒤 순서대로 넣으면 될 것 같아서 코드를 짜기 시작했다.
function solution(wallpaper) {
let point = [];
for (let i = 0; i < wallpaper.length; i++) {
for (let j = 0; j < wallpaper[i].length; j++) {
if (wallpaper[i][j] === "#") {
point.push([i, j])
}
}
}
return ...?
}
문득, 굳이 (x, y) 형태로 하나의 배열에 좌표값을 밀어넣을 필요가 있나? result를 뽑아내려면 너무 복잡해지지 않나? 라는 생각이 들어 x값과 y값을 따로 모아주는 형태로 바꾸기로 했다.
function solution(wallpaper) {
let X = [];
let Y = [];
for (let i = 0; i < wallpaper.length; i++) {
for (let j = 0; j < wallpaper[i].length; j++) {
if (wallpaper[i][j] === "#") {
Y.push(i);
X.push(j);
}
}
}
X.sort((a, b) => a - b);
Y.sort((a, b) => a - b);
return [Y[0], X[0], Y[Y.length - 1], X[X.length - 1];
}
최소/최대값을 구해서 순서대로 구한 것 같은데, 전부 오답 처리가 되었다.
오답 결과를 보니, 최대값이 1씩 부족한 패턴이 보였다. 문제 예시를 한참 들여다보니, 최대값 좌표에서 1씩 더해주어야 파일을 모두 감쌀 수 있었다.
최종 코드
function solution(wallpaper) {
let X = [];
let Y = [];
for (let i = 0; i < wallpaper.length; i++) {
for (let j = 0; j < wallpaper[i].length; j++) {
if (wallpaper[i][j] === "#") {
Y.push(i);
X.push(j);
}
}
}
X.sort((a, b) => a - b);
Y.sort((a, b) => a - b);
return [Y[0], X[0], Y[Y.length - 1] + 1, X[X.length - 1] + 1];
}
'[Node.js_6기 본캠프 TIL]' 카테고리의 다른 글
[최종 프로젝트] 트러블 슈팅 - 1118 (0) | 2024.11.18 |
---|---|
[최종 프로젝트] 트러블 슈팅 - 1115 (4) | 2024.11.15 |
[CH6] 타워 디펜스 리마스터 프로젝트 - 트러블슈팅110 (2) | 2024.11.08 |
CH5_멀티 플레이 과제 - 트러블슈팅 (1) | 2024.11.01 |
전송계층 프로토콜, 대칭키/비대칭키 암호화 방식 그리고 로드밸런싱에 대하여 (0) | 2024.10.31 |