728x90
[Swift] 프로그래머스 크레인 인형뽑기 게임(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/64061
2. 접근
포인트 1)
각 캐릭터는 숫자로 표시되며, 숫자가 같으면 같은 캐릭터이다. 이차원 배열로 입력이 주어지고, moves로는 특정한 열의 위치가 주어져 있다. 한 번의 반복마다 그 열로 가서 '인형을 뽑거나 허탕을 쳐야'한다.
포인트 2)
예시 설명에서 맨 오른쪽에 있는 부분이 스택과도 같다.
그렇다면, moves가 만약 1일 경우, board에 있는 전체 원소의 0번째 인덱스를 순회하여 돌아보며 0이 아닐 때 그 원소를 뽑아 스택에 쌓아주고, 그 원소를 0으로 만들어주면 '뽑기' 기능이 완성된다.
스택의 경우, 앞의 과정에서 뽑힌 인형의 번호와 맨 위에 쌓인 인형의 번호가 같으면 removeLast()를 해주면 된다.
아래의 코드로 위의 과정을 구현하였다.
3. 코드
import Foundation
func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
var innerBoard = board
var stack = [Int]()
var answer = 0
for i in moves {
for j in 0 ... board.count - 1 {
if innerBoard[j][i - 1] != 0 {
if stack.count > 0 && stack.last! == innerBoard[j][i - 1] {
answer += 2
stack.removeLast()
innerBoard[j][i - 1] = 0
} else {
stack.append(innerBoard[j][i - 1])
innerBoard[j][i - 1] = 0
}
break
}
}
}
return answer
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 신규 아이디 추천(lv. 1) (0) | 2023.02.16 |
---|---|
[Swift] 프로그래머스 기사단원의 무기(lv. 1) (0) | 2023.02.15 |
[Swift] 프로그래머스 키패드 누르기(lv. 1) (0) | 2023.02.13 |
[Swift] 프로그래머스 숫자 짝꿍(lv. 1) (0) | 2023.02.10 |
[Swift] 프로그래머스 명예의 전당 (1)(lv. 1) (0) | 2023.02.09 |
댓글