[코딩] 문제풀기/Swift
[Swift] 프로그래머스 | 코딩테스트 연습 -> 2019 카카오 개발자 겨울 인턴십 -> 크레인 인형뽑기 게임
JabCho
2021. 2. 19. 05:54
728x90
반응형
SMALL
func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
var stack: Array<Int> = []
var newBoard = board
var count = 0
var j = 0
for _ in moves { // 입력된 moves 만큼 반복해서 해야 함.
for i in 0..<board.count { // 정사각형이므로 row==col이므로, 바구니의 깊이는 board.count와 같음.
var m = moves[j] // 입력된 move값. 몇번째 col으로 가야 하는지의 정보가 담겨있다.
if (newBoard[i][m-1] == 0){ // 입력된 값은 1부터 시작하므로 -1 해준다.
continue;
}else{
stack.append(newBoard[i][m-1]) // 뽑은 인형을 stack에 넣어준다.
newBoard[i][m-1] = 0 // 기존 보드에서는 0으로 해서 제거해준다.
if (stack.count > 1) { // 전에 들어간 인형과 지금 들어간 인형이 같은지 판별하고 같으면 없앤다.
var last = stack[stack.count - 1]
var first = stack[stack.count - 2]
if (first == last) {
stack.popLast()
stack.popLast()
count += 2
}
}
break;
}
}
j += 1
}
return count
}
문제의 길이가 상당해서 주춤했지만, 쉬운 문제였다.
코드를 다 쓰고 나니, for와 if문의 난장판 같이 보인다. 더 이쁘게 풀 수 있는 방법은 없을까?
728x90
반응형
LIST