반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.1) - [1차] 비밀지도 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/17681
풀이
해당 문제는 정말 코테처럼 프로그래머스 안에서 해결했습니다.
처음에는 arr1과 arr2의 binary를 각각 구해서 마지막에 비교 작업을 거쳤는데요.
그 이유는 0과 1이 true, false를 나타내지 않았기 때문입니다.
통과는 했지만 비교적 코드가 길었습니다.
비교 대상이 0과 1이기 때문에 비트 연산자 |를 사용하면 될 것 같아서 다시 짜보기로 했습니다.
결국에는 한 번의 반복문만으로 코드를 짤 수 있었네요.
이 문제에서 배운 의외였던 점은 2진수의 길이를 지정할 수 없다는 점이었습니다.
String format으로도 마땅한 방법이 안 나와서 String(repeating:, count:)를 이용해 앞에 0을 강제로 붙여줬습니다.
전체 코드
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
var answer: [String] = []
for i in (0..<n) {
var binary = String(arr1[i] | arr2[i], radix: 2)
binary = String(repeating: "0", count: n - binary.count) + binary
answer.append(String(binary.map { $0 == "1" ? "#" : " " }))
}
return answer
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형