새소식

코딩테스트/프로그래머스

[Swift] 대충 만든 자판

  • -

[문제]

코딩테스트 연습 - 대충 만든 자판 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 풀이]

딕셔너리를 만들어서 keymap을 방문하면서 최소로 몇번째로 누를수 있는지를 체크해두자.

만일 딕셔너리 안에 없는 문자라면 -1을 answer에 넣어주자.

[회고]

스위프트는 딕셔너리 기본값이 초기화가 되어 있지 않아서 알고리즘 풀기에는 쉽지 않은 언어이다.

다만 프레임워크나 개발쪽에서는 nil값등이 있는 것이 나은걸 보면 익숙해져야 하는게 맞는듯.

[코드]

import Foundation

func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
    var answer = [Int]()
    var dict = [String: Int]()
    
    for i in keymap {
        var idx = 1
        for j in i {
            dict[String(j)] = min(dict[String(j)] ?? 2100000000, idx)
            idx += 1
        }
    }
    
    for i in targets {
        var temp = 0
        for j in i {
            if dict[String(j)] == nil {
                temp = -1
                
                break
            }
            else {
                temp += dict[String(j)]!
            }
        }
        answer.append(temp)
    }
    return answer
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.