어제 기초 트레이닝 문제를 전부 끝내려했으나 하다 결국 질려서 day5,6이 열려버렸다...
1. 코드 처리하기
주어지는 mode에 따라 글자를 파싱하는 문제
let copyCode: [String.Element] = Array(code)
var mode: Int = 0
var ret: [String.Element] = []
for (idx, char) in copyCode.enumerated() {
if mode == 0 {
if char == "1" {
mode = 1
continue
}
if (idx % 2 == 0) {
ret.append(char)
}
} else {
// mode == 1
if char == "1" {
mode = 0
continue
}
if (idx % 2 != 0) {
ret.append(char)
}
}
}
let result: String = ret.reduce("") { partialResult, char in
partialResult + String(char)
}
if result.isEmpty { return "EMPTY" }
return result
문제에 적힌 순서대로 그대로 코드로 만들어 썻어니 라인이 길어졌다....
줄이면 반은 줄일수 있겠으나 귀찮으니 패스
2. 수열과 구간 쿼리 2
범위 필터 연산?
var result: [Int] = []
for query in queries {
guard query.count == 3 else { return [] }
let s = query[0], e = query[1], k = query[2]
let filtered = arr[s...e].filter { num in
num > k
}
let find = filtered.min() ?? -1
result.append(find)
}
return result
프로그래머스는 타인의 답을 보는 기능이 있는데 항상 볼때마다 이걸 이렇게나 줄일수있네 라고 놀랍다.
값 체크는 항상 하고싶긴한데 주어진 문제에 일일이 하고있으면 재미가 없고 오래걸려서 그냥 넘기려한다.
그런데도 종종 아무 생각없이 값 검사하는게 추가된다
3. 수열과 구간 쿼리 3
배열 순환 스왑 문제
var copyArr: [Int] = arr
for query in queries {
guard query.count == 2 else { return [] }
let i = query[0], j = query[1]
guard (0 ..< copyArr.count) ~= i , (0 ..< copyArr.count) ~= j else { return [] }
let temp = copyArr[i]
copyArr[i] = copyArr[j]
copyArr[j] = temp
}
return copyArr
그냥 적힌 그대로 쭉쭉 코드로 작성했으나 타인 답을 보니 swapAt 라는 함수가 따로 있었다..... 아마 이문제는 swapAt이라는 함수 기능을 사용해보는 문제였겠지싶다
'iOS > 프로그래머스 - 코딩테스트 문제' 카테고리의 다른 글
7. day10 문자열, day11 리스트(배열) (0) | 2024.06.28 |
---|---|
6. day7 반복문, day8 조건문, 문자열 (0) | 2024.06.27 |
4. day3 연산, day4 연산 조건문 (0) | 2024.06.25 |
3. day2 출력,연산 (0) | 2024.06.24 |
2. day1 출력 (0) | 2024.06.24 |