Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 라이징캠프
- swift
- joined()
- uikit
- 클론코딩
- uisearchbar
- String()
- 싱글톤
- 알고리즘
- components()
- prefix()
- 대문자소문자
- replacesubrange()
- suffix()
- Segue
- GIT
- xib
- 코딩테스트
- 코드업 파이썬 기초 100제
- tableView
- 프로그래머스
- zip()
- MVC
- github
- API
- IOS
- Info.plist
- reduce()
- Autolayout
- alamofire
Archives
- Today
- Total
Daeng iOS
[프로그래머스 코테 기초 Swift] #5-1 코드 처리하기 본문
프로그래머스 코딩 기초 트레이닝의 Day5는 "조건문"에 관한 문제다
🗒️ 문제

✏️ 내 풀이
func solution(_ code:String) -> String {
var ret = ""
var mode = 0
let arr = Array(code)
for i in 0..<code.count {
if(mode == 0) {
if(arr[i] != "1" && i % 2 == 0) {
ret += String(arr[i])
}else if(arr[i] == "1"){
mode = 1
}
} else if(mode == 1) {
if(arr[i] != "1" && i % 2 == 1) {
ret += String(arr[i])
}else if(arr[i] == "1"){
mode = 0
}
}
}
return ret == "" ? "EMPTY" : ret
}
꾸역꾸역 풀어냈음
1) 먼저 String 인 code를 배열로 변환해서 그 수만큼 반복문을 돌린다
2) 반복문안에서 mode 변수를 구분한다
3) mode를 구분하는 조건문 안에서 1인지 아닌지 분기하여 처리한다
대충 이런식으로 풀었는데.. 전혀 깔끔한 느낌이 들지않았음
🔍 다른 풀이
1)
func solution(_ code:String) -> String {
var answer = "", mode = false
code.enumerated().forEach {
let code = String($0.element)
if code == "1" { mode.toggle() }
else {
if mode && $0.offset % 2 != 0 { answer.write(code) }
else if !mode && $0.offset % 2 == 0 { answer.write(code) }
}
}
return answer.isEmpty ? "EMPTY" : answer
}
2)
func solution(_ code: String) -> String {
let result = code.enumerated().reduce(into: ("", 0)) { acc, val in
let (i, c) = val
if c == "1" {
acc.1 = 1 - acc.1
} else if (acc.1 == i % 2) {
acc.0 += String(c)
}
}
return result.0.isEmpty ? "EMPTY" : result.0
}
일단 첫번째 코드에서 아차 싶었던 것..
- mode는 그냥 0과 1을 구분하여 스위치 하기 위함이기 때문에 Bool 타입으로 구현해서 toggle()해도 됐다
enumerated()는 공부를 따로 해봐야할 것 같다 ..!
아직은 넘 어렵군
'알고리즘 & 코딩테스트 > 프로프래머스' 카테고리의 다른 글
[프로그래머스 코테 기초 Swift] #4-5 flag에 따라 다른 값 반환하기 (0) | 2024.05.26 |
---|---|
[프로그래머스 코테 기초 Swift] #4-4 조건 문자열 (0) | 2024.05.23 |
[프로그래머스 코테 기초 Swift] #4-3 홀짝에 따라 다른 값 반환하기 (0) | 2024.05.23 |
[프로그래머스 코테 기초 Swift] #4-2 공배수 (0) | 2024.05.22 |
[프로그래머스 코테 기초 Swift] #4-1 n의 배수 (0) | 2024.05.22 |