반응형
문제가 길다. 이 글을 읽는 사람들은 프로그래머스를 풀다가 직접 검색해서 온 사람들일것이니 따로 문제를 적진 않겠다.
전형적인 stack문제이다.
function solution(board, moves) {
//각 칸에서 0보다 처음 커지는 자리를 0으로 바꾸고
//store[store.length-1]과 board[i][j]를 비교한다.
//store의 마지막자리와 지금 store에 넣으려는 값(board[i][j])이 같다면
//store의 마지막 값을 pop하고
//인형이 2개(넣으려는값+store의 마지막값)가 없어졌으니 result +=2 한다.
let store = [];//stack역할함
let result = 0
moves.forEach(move=>{
for(let i = 0;i<board.length;i++){//크레인의 위치
if(board[i][move-1]>0){//인형이 있다면
let tmp = board[i][move-1]//인형의 값을 tmp에 할당
if(store[store.length-1]===tmp){//tmp와 store의 마지막 인형값이 같다면
store.pop();//마지막 인형을 없애고(tmp값도 사라지는데 더했다 지울것이라 생략)
result += 2;//터뜨린인형2개 추가
}else{
//store마지막값이 tmp와 다르면 그냥 store에 넣는다.
store.push(tmp)
}
//인형 뺐으니까 0으로 바꿔주고
board[i][move-1]=0
//다음칸으로
break;
}
}
})
return result//터뜨린 인형 개수
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스 문자열 내맘대로 정하기 ( JS, Array.sort() ) (0) | 2021.12.28 |
---|---|
프로그래머스 : 모의고사 (자바스크립트) (0) | 2021.10.29 |
프로그래머스 키패드 누르기 (자바스크립트) (0) | 2021.10.28 |
프로그래머스 : 숫자 문자열과 영단어 자바스크립트 (0) | 2021.10.27 |
알고리즘 : 큰 수 구하기 프로그래머스 (자바스크립트) (0) | 2021.10.26 |