1. 숫자 찾기
Q. 정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
func solution(_ num:Int, _ k:Int) -> Int {
var result = -1
String(num).enumerated().forEach {
if result == -1 && Int(String($1))! == k {
result = $0 + 1
}
}
return result
}
A. 전달 받은 num을 String으로 변환한 후 enumerated()를 통해 반복하면서
result가 -1이고 해당 원소가 전달 받은 k일 때, result의 값에 해당 index에 1을 더한 값을 저장한 후
반복문이 끝나면 result를 반환하여 해결했다.
feat.
func solution(_ num:Int, _ k:Int) -> Int {
let s = String(num).map{ Int(String($0))! }
return (s.firstIndex(of: k) ?? -2) + 1
}
다른 풀이를 보았을 때,
firstIndex(of:)를 사용하면 손쉽게 문제를 해결할 수 있다는 것을 알게 되었다.
2. n의 배수 고르기
Q. 정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
func solution(_ n:Int, _ numlist:[Int]) -> [Int] {
return numlist.filter { $0 % n == 0 }
}
A. 전달 받은 numlist를 고차함수 filter를 통해 순회하면서 원소를 n으로 나누었을 때, 나머지가 0인 원소들만 배열로 반환하여 해결했다.
3. 자릿수 더하기
Q. 정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
func solution(_ n:Int) -> Int {
return String(n).map { Int(String($0))! }.reduce(0, +)
}
A. 전달 받은 n을 String으로 변환한 후 고차함수 map을 통해 순회하면서 각 자리의 문자열을 정수로 변환한 배열을 반환하였고,
해당 배열을 고차함수 reduce를 통해 모두 더한 후 반환하여 해결했다.
4. OX 퀴즈
Q. 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
func solution(_ quiz:[String]) -> [String] {
var result: [String] = []
quiz.forEach {
var value: Int = 0
var isPlus = false
$0.components(separatedBy: " ").enumerated().forEach {
switch $0 {
case 0:
value = Int($1)!
case 1:
isPlus = ($1 == "+")
case 2:
value += isPlus ? Int($1)! : Int($1)! * -1
case 4:
result.append(value == Int($1)! ? "O" : "X")
default:
break
}
}
}
return result
}
A. 전달 받은 quiz를 forEach문을 통해 순회하면서
매번 수식의 결과가 옳은지 판단하기 위한 value를 생성하고 연산자가 +인지 -인지 판별하는 변수isPlus를 생성한다.
그리고 수식을 components(separatedBy:)를 통해 배열로 변환한 후,
enumerated()와 forEach를 통해 index와 value를 접근할 수 있도록 반복하면서 switch문을 통해
첫 번째일 때는 X를 value에 저장
두 번째일 때는 연산자를 판별
세 번째일 때는 연산자에 따라 value에 Y를 연산
네 번째일 때는 등호 연산자임으로 넘어가고
다섯 번째일 때는 연산한 값과 Z의 값을 비교해 result에 "O", "X" 값을 저장한다.
그 후 반복문이 끝나면 result를 반환하여 해결했다.
오블완 챌린지가 끝나고 글 쓰는게 너무 귀찮아서 계속 미뤄오다가
12월의 첫 평일인 오늘 다시 마음을 잡고 글을 쓰게 되었다.
예상했던 것처럼 한 번 마음을 놓아버리니 계속 놓게 되는 악습관이 있는 것 같은데,,,
남은 문제도 얼른 풀어버릴 수 있도록 다시 한 번 마음을 잡아보자!
내일도 화이팅!
'Develop > Coding Test' 카테고리의 다른 글
코딩테스트 입문 (feat. Day 19 문자열, 배열, 조건문) (3) | 2024.12.28 |
---|---|
코딩테스트 입문 (feat. Day 18 문자열, 수학, 조건문, 정렬) (0) | 2024.12.13 |
코딩테스트 입문 (feat. Day 16 문자열, 수학, 배열, 조건문) (3) | 2024.11.27 |
코딩테스트 입문 (feat. Day 15 문자열, 해시, 배열, 수학) (2) | 2024.11.26 |
코딩테스트 입문 (feat. Day 14 문자열, 배열, 사칙연산, 수학, 조건문) (1) | 2024.11.24 |