Where who wants to meet someone
조건에 맞게 수열 변환하기 1 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181882
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ arr:[Int]) -> [Int] {
var result = arr
for i in result.indices {
if result[i] >= 50 && result[i] % 2 == 0 {
result[i] /= 2
} else if result[i] < 50 && result[i] % 2 != 0 {
result[i] *= 2
}
}
return result
}
- 50과 같거나 크고 짝수이면 2로 나눈 값으로 바꾸고, 50보다 작으면서 홀수라면 2를 곱한 값으로 바꾼 result를 반환
- map으로 삼항연산자를 사용하여 조건을 줬더니 타입 추론 오류가 발생
// 풀이 1
import Foundation
func solution(_ arr:[Int]) -> [Int] {
return arr.map {
if $0 < 50 && $0 % 2 == 1 {
return $0 * 2
} else if $0 >= 50 && $0 % 2 == 0 {
return $0 / 2
} else {
return $0
}
}
}
// 풀이 2
import Foundation
func solution(_ arr:[Int]) -> [Int] {
return arr.map { $0%2 == 0 ? ($0 >= 50 ? $0/2 : $0) : ($0 < 50 ? $0*2 : $0) }
}
// 풀이 3
import Foundation
func solution(_ arr:[Int]) -> [Int] {
return arr.map {
if $0 % 2 == 0 && 50 <= $0 { return $0 / 2 }
if $0 % 2 != 0 && 50 > $0 { return $0 * 2 }
return $0
}
}
- 풀이 1은 for문 안에서 했던 작업을 map 안에서 수행
- 풀이 2는 삼항연산을 사용했지만 true/false일 때 조건을 주는 식으로 해서 오류가 나지 않은 것 같다
(오류가 났었던 코드: arr.map { ($0 >= 50 && $0 % 2 == 0) ? $0 / 2 : ($0 < 50 && $0 % 2 != 0) ? $0 * 2 : $0 })
점수: ?(네트워크 오류나서 못봄)
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
1로 만들기 (0) | 2024.01.26 |
---|---|
조건에 맞게 수열 변환하기 2 (0) | 2024.01.26 |
수열과 구간 쿼리 1 (0) | 2024.01.25 |
n보다 커질 때까지 더하기 (0) | 2024.01.25 |
할 일 목록 (1) | 2024.01.25 |