2018년 카카오 블라인드 채용 문제 중 하나!
어렵게 생각해서 이중 포문 써서 풀었다가 비효율적인것 같아서 다시 풀기^^..
자릿수 맞추는 부분에서 고민 많이 했다는..ㅠㅠ
나의 풀이
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
var answer: [String] = []
for (s1, s2) in zip(arr1, arr2) {
let originBinary = String(s1 | s2, radix: 2)
let binary = originBinary.count < n ? (0..<n-originBinary.count).map { _ in "0" }.reduce("", +) + originBinary : originBinary
answer.append(binary)
}
return answer.map { $0.map { $0 == "1" ? "#" : " "}.joined() }
}
- zip 연산자 사용해서 두 배열을 쌍으로 가져와 덧셈 연산 후 이진수로 변환
- 자릿수를 동일하게 맞춰주기 위해 부족한 자릿수만큼 "0" 추가
- 이진수 문자열을 문제에 맞게("1" -> "#", "0" -> " ") 변환 후 배열 리턴
다른 사람의 풀이
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
return (0..<n).map {
let binary = String(arr1[$0] | arr2[$0], radix: 2)
let padded = String(repeating: "0", count: n - binary.count) + binary
return padded.reduce("") { $0 + ($1 == "0" ? " " : "#") }
}
}
- 0부터 n미만까지 범위 지정해 인덱스로 접근
- 부족한 자릿수 패딩 추가
- 이진수 문자열을 문제에 맞게("1" -> "#", "0" -> " ") 변환 후 리턴
- 배열 리턴
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 모의고사 swift (0) | 2024.07.29 |
---|---|
[프로그래머스] Lv.1 [1차] 다트게임 swift (1) | 2024.07.26 |
[프로그래머스] Lv.1 행렬의 덧셈 swift (0) | 2024.07.22 |
[프로그래머스] Lv.1 소수 만들기 swift (2) | 2024.07.22 |
[프로그래머스] 전국 대회 선발 고사 swift (0) | 2024.07.05 |