제목: Lv. 1 - 대충 만든 자판
시간: 30분
https://school.programmers.co.kr/learn/courses/30/lessons/160586
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제에 주어진대로 풀면 되는 구현 문제였다.
문제를 보자마자 firstIndex를 사용해서 값을 구하면 되겠다고 생각했다.
그런데 firstIndex로 배열의 Index를 Int 값으로 변환하는게 오래걸렸다.
구글을 통해 오픈 북을 조금 하다... 방법을 찾아냈다.
import Foundation
func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
var result: [Int] = []
for target in targets {
var sum = 0
for ch in target {
var keyIndexArray: [Int] = []
for key in keymap {
if let i = key.firstIndex(of: ch) {
let index: Int = key.distance(from: key.startIndex, to: i) + 1
keyIndexArray.append(index)
} else {
keyIndexArray.append(1000)
}
}
sum += keyIndexArray.min()!
}
if (sum >= 1000) {
result.append(-1)
} else {
result.append(sum)
}
}
return result
}
대충 만든 코드랄까... 조금 지저분하긴 하다.
코테 문제를 풀고나면 다양한 인사이트를 얻기 위해 다른 사람 풀이를 보는데
다른 사람들은 firstIndex 를 직접 구현한 사람도 있고, offset으로 푼 사람, dictionary 등 다양했다.
구현 문제는 풀이 방법이 참 다양한 것 같다.
'알고리즘 > 문제' 카테고리의 다른 글
[프로그래머스] Lv. 1 - [PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2024.11.26 |
---|---|
[프로그래머스] Lv. 1 - 달리기 경주 (0) | 2024.11.24 |
[프로그래머스] Lv. 2 - 퍼즐 게임 챌린지 (0) | 2024.11.20 |
[프로그래머스] Lv. 2 - 멀리뛰기 (0) | 2024.11.18 |
[프로그래머스] Lv. 1 - 바탕화면 정리 (0) | 2024.11.17 |