1. 편지
Q. 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.
func solution(_ message:String) -> Int {
return message.count * 2
}
A. 전달 받은 message의 길이에 2를 곱한 값을 반환하여 해결했다.
2. 가장 큰 수 찾기
Q. 정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
func solution(_ array:[Int]) -> [Int] {
var result: [Int] = [0, 0]
array.enumerated().forEach {
if result[0] < $1 {
result[1] = $0
result[0] = $1
}
}
return result
}
A. 전달 받은 array를 enumerated()와 forEach를 통해 index와 value를 순회하면서
result[0]에 저장된 값과 순회하는 값을 비교해 순회하는 값이 더 크면
result[0]에는 값을, result[1]에는 그 수의 인덱스를 저장하는 과정을 반복한 후 result를 반환하여 해결했다.
feat.
func solution(_ array:[Int]) -> [Int] {
return [array.max()!, array.index(of: array.max()!)!]
}
다른 풀이 보고난 , max()와 index(of:)를 활용해서
반복문 없이 손쉽게 문제 해결하는 방법을 알게 되었다.
3. 문자열 계산하기
Q. my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요. ( 연산자는 +, -만 존재합니다. )
func solution(_ my_string:String) -> Int {
var isPlus = true
var result: Int = 0
my_string.components(separatedBy: " ").forEach {
if isPlus {
result += Int($0) ?? 0
} else {
result -= Int($0) ?? 0
}
isPlus = $0 == "+" ? true : false
}
return result
}
A. components(separatedBy:)를 통해 배열로 변환한 my_string을 forEach로 순회하면서
먼저, isPlus가 true인 경우 result에 해당 원소를 더하고 false인 경우 result에 해당 원소를 뺀다.
이 때, 원소가 + 혹은 -면 ?? 연산자를 통해 0을 반환한다.
그리고 해당 원소가 +면 isPlus를 true로 아니면 false로 변경한다.
위 반복문이 끝나면 result를 반환하여 해결했다.
feat.
func solution(_ my_string:String) -> Int {
my_string
.replacingOccurrences(of: " - ", with: " + -")
.components(separatedBy: " + ")
.reduce(0, { $0 + Int($1)! })
}
다른 풀이 중 replacingOccurrences로 my_string의 " - " 연산자를 모두 " + - "로 변경한 후
components(separatedBy:)를 통해 " + "를 기준으로 배열을 반환하고
reduce로 모든 양수와 음수로 더하는 풀이를 보았는데
빼기 연산을 음수의 더하기 연산으로 생각하는 발상이 인상 깊은 풀이었다.
4. 배열의 유사도
Q. 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
func solution(_ s1:[String], _ s2:[String]) -> Int {
return s1.filter { s2.contains($0) }.count
}
A. 전달 받은 s1을 고차함수 filter로 순회하면서 s2에 포함되는 값들의 배열을 구한 후 길이를 반환하여 해결했다.
오늘을 기점으로 티스토리에서 진행하는 오블완 챌린지가 막을 내린다.
처음에는 한 번도 빠지지 않고 쓰리라 다짐했지만..
한 번 안쓰니 흐름이 깨져서 4번이나 빼먹었다..
다짐한 것처럼 꾸준히 쓰지는 못했지만,
그래도 챌린지 덕분에 아무것도 안하는 것보단 의미있는 시간을 만들 수 있어서 좋았던 것 같다!
남은 입문 문제 풀이는 끝까지 써보려고 한다.
내일도 화이팅!
'Develop > Coding Test' 카테고리의 다른 글
코딩테스트 입문 (feat. Day 18 문자열, 수학, 조건문, 정렬) (0) | 2024.12.13 |
---|---|
코딩테스트 입문 (feat. Day 17 문자열, 수학, 배열, 조건문) (3) | 2024.12.02 |
코딩테스트 입문 (feat. Day 15 문자열, 해시, 배열, 수학) (2) | 2024.11.26 |
코딩테스트 입문 (feat. Day 14 문자열, 배열, 사칙연산, 수학, 조건문) (1) | 2024.11.24 |
코딩테스트 입문 (feat. Day 13 문자열, 배열, 사칙연산, 수학, 조건문) (3) | 2024.11.22 |