새소식

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

[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

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

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