1. 옷가게 할인 받기
Q. 머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. 구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
func solution(_ price:Int) -> Int {
var sale: Double = 1
if price >= 500000 {
sale = 0.8
} else if price >= 300000 {
sale = 0.9
} else if price >= 100000 {
sale = 0.95
}
return Int(Double(price) * sale)
}
A. 조건문을 활용해서 가격을 50만 원, 30만 원, 10만 원 순으로 비교해서 지불해야 할 금액을 구하기 위한 할인율을 저장한 후 가격과 구한 값을 통해 지불해야 할 금액을 반환하여 해결했다.
2. 아이스 아메리카노
Q. 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
func solution(_ money:Int) -> [Int] {
return [money / 5500, money % 5500]
}
A. 배열의 첫번째 원소에는 전달 받은 돈을 아메리카노 한 잔 가격인 5,500원으로 나눈 후 나온 몫을, 두번째 원소에는 나온 나머지를 저장한 후 반환하여 해결했다.
3. 나이 출력
Q. 머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
func solution(_ age:Int) -> Int {
return 2022 - age + 1
}
A. 2022년 기준으로 전달 받은 age를 뺀 값에 1을 더한 값을 반환하여 해결했다.
feat.
문제 해결 후, 2022가 아닌 1을 더한 2023에 age를 뺀다면
더 짧은 코드로 문제를 해결 할 수 있다는 것을 깨달았다.
4. 배열 뒤집기
Q. 정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
func solution(_ num_list:[Int]) -> [Int] {
return num_list.enumerated().map { index, _ in
num_list[num_list.count - index - 1]
}
}
A. 전달 받은 num_list를 enumerated()와 고차함수 map을 활용하여 index를 가지고 배열을 순회하면서
배열의 길이에 index - 1 을 뺀 값들을 새로운 배열로 반환하여 해결했다.
feat.
해결 후 다른 풀이를 보며
swift에 reverse()와 reversed() 메서드가 존재한다는 것을 알게 되었다.
func solution(_ num_list:[Int]) -> [Int] {
return num_list.reversed()
}
해당 메서드를 사용한다면, 위와 같이 매우 간단하게 문제를 해결할 수 있다.
위 사항을 알게되면서 궁금점이 하나 생겼는데,
'reverse() 와 reversed() 의 차이점은 무엇일까?' 라는 생각이 들었다.
알아본 결과, mutating에 따른 Complexity(복잡성)에서 차이가 존재한다.
mutating func reverse() / O(n)
func reversed() -> ReversedCollection<Self> / O(1)
위와 같이 두 메서드는 mutating의 유무로 인해
값을 변경하냐 혹은 주소를 변경하냐에서 차이점이 발생하고
이로 인해 복잡성이 다르게 나타나는 것을 알 수 있었다.
오늘은 문제가 어렵진 않았고,
다른 사람들의 풀이를 보면서 부족한 지식을 쌓을 수 있어서
의미있는 시간이 되었던 것 같다.
Swift를 벌써 1년이나 사용했지만 실무로 배운 부분이 많다보니
아직 문법적으로는 공부가 많이 필요한 것 같다..
내일도 화이팅!
'Develop > Coding Test' 카테고리의 다른 글
코딩 테스트 입문 (feat. Day 7 문자열, 조건문, 수학, 반복문) (2) | 2024.11.14 |
---|---|
코딩 테스트 입문 (feat. Day 6 문자열, 반복문, 출력, 배열, 조건문) (0) | 2024.11.13 |
코딩 테스트 입문 (feat. Day 4 수학, 배열) (0) | 2024.11.11 |
코딩 테스트 입문 (feat. Day 3 사칙연산, 배열, 수학) (2) | 2024.11.10 |
코딩 테스트 입문 (feat. Day 2 사칙연산, 조건문, 배열) (2) | 2024.11.09 |