Skip to content

[Algorithm] 대충 만든 자판 #117

@hwangJi-dev

Description

@hwangJi-dev

💬 문제

대충 만든 자판


💬 Idea

  • keymap을 돌며 keyDict에 자판별 최솟값을 저장해준다.
  • 이후 targets를 돌며 타겟 문자열 각각의 최소 횟수을 더하여 각 타겟 문자열이 최소 몇번 눌려야하는지 구해준다.
    • 만약 keyDict에 타겟 문자가 없을 경우 -1을 리턴하기 위해 for문을 break해주었다.

💬 풀이

import Foundation

func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
    var keyDict: [String: Int] = [:]
    var result: [Int] = []
    
    for key in keymap {
        for (idx, k) in key.enumerated() {
            if keyDict[String(k)] == nil {
                keyDict[String(k)] = idx + 1
            } else {
                keyDict[String(k)] = keyDict[String(k)]! > idx + 1 ? idx + 1 : keyDict[String(k)]!
            }
        }
    }
    
    for target in targets {
        var ans = 0
        for t in target {
            if keyDict[String(t)] == nil {
                ans = -1
                break
            } else {
                ans += keyDict[String(t)]!
            }
        }
        result.append(ans)
    }
    
    return result
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions