문제
답안
function solution(wallpaper) {
// 답안에 들어갈 좌표계 생성
var answer = [0,0,0,0];
let arr = [];
// wallpaper에서 '#'이 포함된 가장 마지막 값의 위치를 찾아 +1한 후 answer[2]에 넣어준다.
// +1 해주는 이유는 드래그를 해서 포함시켜야 하기 때문임
for(let i = 0; i < wallpaper.length; i++){
if(wallpaper[i].includes('#')){
answer[2] = i+1;
continue;
}
}
// wallpaper에서 '#'이 포함된 가장 첫번째 값의 위치를 answer[0]에 넣어준다.
for(let i = 0; i < wallpaper.length; i++){
if(wallpaper[i].includes('#')){
answer[0] = i;
break;
}
}
// wallpaper의 값 내부에서 '#'의 위치를 찾아 모두 arr에 넣어준다.
for(let i = 0; i < wallpaper.length; i++){
for(let j = 0; j < wallpaper[i].length; j++){
if(wallpaper[i][j] == '#'){
arr.push(j);
}
}
}
// arr의 값을 오름차순으로 정렬한다.
arr.sort((a,b)=>a-b);
// arr에서 가장 작은 값을 answer[1]에, 가장 큰값에 1을 더해 answer[3]에 넣어준다.
answer[1] = arr[0];
answer[3] = arr[arr.length-1]+1;
return answer;
}
배우고 싶은 답안
function solution(wallpaper) {
let left = [];
let top = [];
let right = []
let bottom = [];
wallpaper.forEach((v,i) => {
[...v].forEach((val,ind) => {
if(val === "#") {
left.push(i)
top.push(ind)
right.push(i + 1)
bottom.push(ind + 1)
}
})
})
return [Math.min(...left), Math.min(...top), Math.max(...right), Math.max(...bottom)]
}
후기
x,y 좌표가 반대라 조금 헷갈린 문제였다.
forEach에 대해 익숙해지고 싶은데, 배열 내부값을 하나씩 확인한다는것이 정확하게 무슨 뜻인지 잘 모르겠다.
싸피 합격하면 강의 사서 들어야겠다.....
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 문자열 나누기 (Javascript) (2) | 2023.11.24 |
---|---|
프로그래머스 Level 1 - 햄버거 만들기 (Javascript) (3) | 2023.11.23 |
프로그래머스 Level 1 - 크레인 인형뽑기 게임 (Javascript) (3) | 2023.11.21 |
프로그래머스 Level 1 - 둘만의 암호 (Javascript) (2) | 2023.11.20 |
프로그래머스 Level 1 - 신고 결과 받기 (Javascript) (0) | 2023.11.19 |