일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- ESXi 업데이트
- Qualification Round
- 정보과학과
- ingress-nginx
- 프로그래머스
- swift
- Code Jam 2022
- 방송통신대학교 대학원 정보과학과
- hackerrank
- Code Jam
- C++
- 해커랭크
- 하늘과 바람과 별과 시
- 3D PRINTING
- 방통대 대학원 정보과학과
- GitLab
- nestedlists
- on-prem
- Kubernetes
- Python
- K8S
- 코딩테스트
- MySQL
- 하늘과 바람과 별과 詩
- openebs
- 2022
- LEVEL 2
- secondlowestgrade
Archives
- Today
- Total
공대생의 비망록
[프로그래머스][Lv. 1] 비밀지도 Swift 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/17681
풀이
2018 KAKAO BLIND RECRUITMENT 1차 코딩테스트에 나온 문제.
처음에는 문제 설명에 충실하게 arr1, arr2에 있는 10진수 값을 2진수로 바꾸고 둘 다 0일 경우 빈 공간, 그렇지 않고 둘 중 하나라도 1일 경우 벽으로 계산하는 방법으로 진행했었다.
문제 해결 후 다시 생각해보니, 비트 연산(OR 연산)을 설명한 것이랑 다를 것이 전혀 없어 간소화한 코드를 시도해봤고, 성공했다!
Swift 언어가 아니라 다른 언어를 사용했었다면 어땠을까 생각하며 두 버전을 모두 기록으로 남기기로 결정했다.
끝!
<간결한 버전>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
var answer: [String] = Array(repeating: "", count: n)
for i in 0..<n {
var bin: String = String(arr1[i] | arr2[i], radix: 2)
while bin.count < n {
bin = "0" + bin
}
for j in 0..<n {
answer[i].append(bin[bin.index(bin.startIndex, offsetBy: j)] == "0" ? " " : "#")
}
}
return answer
}
|
cs |
<처음 풀이한 버전>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
var answer: [String] = Array(repeating: "", count: n)
for i in 0..<n {
var bin1: String = String(arr1[i], radix: 2), bin2: String = String(arr2[i], radix: 2)
while bin1.count < n {
bin1 = "0" + bin1
}
while bin2.count < n {
bin2 = "0" + bin2
}
for j in 0..<n {
if bin1[bin1.index(bin1.startIndex, offsetBy: j)] == "0" && bin2[bin2.index(bin2.startIndex, offsetBy: j)] == "0" {
answer[i].append(" ")
} else {
answer[i].append("#")
}
}
}
return answer
}
|
cs |
'Programming Language > Swift' 카테고리의 다른 글
[프로그래머스][Lv. 2] 문자열 압축 Swift 풀이 (0) | 2022.04.08 |
---|---|
[프로그래머스][Lv. 1] 다트 게임 Swift 풀이 (0) | 2022.04.07 |
[프로그래머스][Lv. 1] 최소직사각형 Swift 풀이 (0) | 2022.04.06 |
[프로그래머스][Lv. 1] 예산 Swift 풀이 (0) | 2022.04.06 |
[Google Code Jam][Qualification Round 2022] Punched Cards Swift 풀이 (0) | 2022.04.03 |
Comments