문제
내 정답 코드
import Foundation
func solution(_ a:Int, _ b:Int, _ c:Int, _ d:Int) -> Int {
var numSet:Set<Int> = [a, b, c, d]
var numSetArr:[Int] = numSet.map { $0 }
var numArr = [a,b,c,d]
switch numSet.count {
case 1:
return numArr[0] * 1111
case 2:
var (p, q) = (0, 0)
for num in numSetArr {
if numArr.filter { num == $0 }.count == 3 {
p = num
} else if numArr.filter { num == $0 }.count == 2 {
p = numSetArr[0]
q = numSetArr[1]
return (p+q) * abs(p-q)
}
else {
q = num
}
}
return (p * 10 + q) * (p * 10 + q)
case 3:
var (q, r) = (0, 0)
for num in numSetArr {
if numArr.filter { num == $0 }.count != 2 {
if q == 0 {
q = num
}
else if r == 0 {
r = num
}
}
}
return q*r
case 4:
return numSet.min()!
default:
break
}
return 0
}
#
1. 여러모로 귀찮은 문제였는데 Set를 이용해서 중복된 수의 개수를 파악했다.
2. 각 수마다 정해진 계산식을 적용하여 문제를 해결하였다.
3. 뭔가 지저분하게 코드를 짠 것 같아 시간이 될 때 간결하게 짜봐야겠다.
배운 기술
abs( )
'프로그래머스 (Swift) > 기초' 카테고리의 다른 글
[Day8-4] 9로 나눈 나머지 (0) | 2024.02.24 |
---|---|
[Day8-3] 글자 이어 붙여 문자열 만들기 (1) | 2024.02.24 |
[Day8-1] 간단한 논리 연산 (0) | 2024.02.18 |
[Day7-5] 배열 만들기 4 (0) | 2024.02.17 |
[Day7-4] 콜라츠 수열 만들기 (0) | 2024.02.17 |