-
[programmers/Swift] [1차]비밀지도 (2018 Kakao Blind Recruitment)Archive/Questions 2022. 5. 9. 22:05728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 2018 Kakao Blind Recruitment - 비밀지도
Constraints :
입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.
- 1 ≦ n ≦ 16
- arr1, arr2는 길이 n인 정수 배열로 주어진다.
- 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2n - 1을 만족한다.
// // Created by Yongwoo Marco on 2022/05/06. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] { let unionTable = zip(arr1, arr2).map { data -> String in let str = String(UInt16(data.0) | UInt16(data.1), radix: 2) return str.count < n ? String(repeating: "0", count: n - str.count) + str : str } return unionTable.map { $0.reduce("") { $1 == "1" ? $0 + "#" : $0 + " " } } } print(solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28])) // ["#####","# # #", "### #", "# ##", "#####"] print(solution(6, [46, 33, 33 ,22, 31, 50], [27 ,56, 19, 14, 14, 10])) // ["######", "### #", "## ##", " #### ", " #####", "### # "]
How I tried this :
두 배열을 합치는 작업과 "011" 같은 값이 "11" 처럼 나오는 점을 고민했다.zip과 map 을 이용해서 두 배열을 합치고 n 보다 작은 길이의 문자열은 "0"을 추가해주었다.
What I got is :
2진법 수의 연산은 UInt16으로 가능하다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 모의고사 (0) 2022.05.10 [programmers/Swift] 가장 큰 수 (0) 2022.05.10 [programmers/Swift] 나머지가 1이 되는 수 찾기 (0) 2022.05.09 [programmers/Swift] 키패드 누르기 (2020 Kakao 인턴쉽) (0) 2022.05.09 [programmers/Swift] 기능 개발 (0) 2022.05.09