예전에 한 번 C++로 풀어봤던 문제.
이상했던 건 같은 코드를 제출했는데 한 번은 시간초과가 나서
이상하다? 싶어서 다시 돌려봤더니 통과.
아마도 오류인 듯 하다.
풀이 로직은 이렇다.
board의 열(column)을 기준으로 하나씩 위에서부터 살펴보는데,
만약 board[행][열]이 0이면 그냥 넘어가고,
0이 아니면, 즉 꺼낼 값이 있다면 해당 값을 어떤 Int 배열에 추가한다.
그리고 나서, 해당 Int 배열의 마지막 두 요소를 비교해 두 개가 같으면
해당 배열에서 마지막 두 요소를 빼주고,
정답 변수에 2를 더한다.
정답 코드는 아래와 같다.
import Foundation
func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
var answerArray = [Int]()
var answer = 0
var board = board
var n = board[0].count
for (index, move) in moves.enumerated() {
for i in 0..<n {
if board[i][move - 1] != 0 {
answerArray.append(board[i][move - 1])
board[i][move - 1] = 0
break;
}
}
if answerArray.count >= 2 && answerArray[answerArray.count - 1] == answerArray[answerArray.count - 2] {
answerArray.removeLast()
answerArray.removeLast()
answer += 2
}
}
return answer
}
'Algorithm' 카테고리의 다른 글
프로그래머스 - 수식 최대화 [Swift] (0) | 2021.09.06 |
---|---|
프로그래머스 - 5주차[Swift] (0) | 2021.09.06 |
프로그래머스 - 정수 제곱근 판별 [Swift] (0) | 2021.07.05 |
프로그래머스 [Swift] 제일 작은 수 제거하기 (0) | 2021.07.05 |
프로그래머스 [Swift] 문자열 내 마음대로 정렬하기 (0) | 2021.07.03 |
최근댓글