https://school.programmers.co.kr/learn/courses/30/lessons/12981
문제 풀이
영어로 끝말잇기를 하는데 앞뒤 글자가 정확한지 같은 단어가 나오진 않았는지 확인한 후에
틀린 친구는 누구이고 몇 번째에 틀렸는지를 구해내면 되는 문제다.
먼저 게임이 진행되는 리스트 game을 만들어 놓고 시작
진행되는 동안 우선 뒷글자와 일치하는지 확인(1) -> 아닐 경우 answer에 넣고 break
앞서 이 단어가 나오지 않았는지 확인(2) -> 아닐 경우 answer에 넣고 break
둘 다 괜찮으면 게임이 진행되도록 game에 append
게임이 끝나도 걸리는 부분이 없다면 answer를 [0, 0]으로 만들어 놓고 return 한다.
여기서 주의해야 할 점!!
break을 걸어주지 않을 경우 틀려도 계속해서 게임이 진행될 수 있음..
꼭 걸어 주어야 한다
처음엔 17, 19, 20 케이스에서 틀렸다고 나왔는데
(1)과 (2)의 순서를 바꿔주었더니 해결됐다!
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var game: [String] = []
var answer: [Int] = []
for i in 0..<words.count {
if i > 0 {
let now = Array(words[i])
let prev = Array(words[i - 1])
if now[0] != prev[prev.count - 1] {
answer.append((i % n) + 1)
answer.append((i / n) + 1)
break
}
}
if game.contains(words[i]) {
answer.append((i % n) + 1)
answer.append((i / n) + 1)
break
} else {
game.append(words[i])
}
}
if answer.count == 0 {
answer = [0, 0]
}
return answer
}
'공부하자! > 알고리즘' 카테고리의 다른 글
백준 20546 기적의 매매법 Swift - 구현 (0) | 2023.05.23 |
---|---|
백준 20053 최소, 최대 2 Swift - 구현 (0) | 2023.05.13 |
프로그래머스 | 방문 길이 Lv.2 Swift (0) | 2023.03.17 |
프로그래머스 | 전화번호 목록 Lv.2 (0) | 2023.03.06 |
프로그래머스 | 롤케이크 자르기 파이썬 (0) | 2022.11.06 |