Where who wants to meet someone
1로 만들기 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181880
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ num_list:[Int]) -> Int {
var arr = num_list
var result = 0
while arr.max() != 1 {
for i in arr.indices where arr[i] != 1 {
arr[i] = arr[i] % 2 == 0 ? arr[i] / 2 : (arr[i] - 1 ) / 2
result += 1
}
}
return result
}
- arr의 가장 큰 값이 1이 아니라면 while문 반복(전부 1이 되었다면 가장 큰 값은 1이기 때문)
- for문으로 각 인덱스를 반복하는데, 요소가 1이 아닌 항목만 작업
- 짝수면 2로 나누고, 홀수면 1을 빼고 2로 나누는 작업을 하면서 result값 증가
import Foundation
func solution(_ num_list:[Int]) -> Int {
func dfs(_ num: Int, _ count: Int) -> Int {
if num == 1 { return count }
return dfs(num / 2, count + 1)
}
return num_list.reduce(0) { $0 + dfs($1, 0) }
}
- 재귀함수를 활용하여 해결한 풀이가 있었다.
점수: +1
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
원하는 문자열 찾기 (0) | 2024.01.26 |
---|---|
길이에 따른 연산 (0) | 2024.01.26 |
조건에 맞게 수열 변환하기 2 (0) | 2024.01.26 |
조건에 맞게 수열 변환하기 1 (0) | 2024.01.26 |
수열과 구간 쿼리 1 (0) | 2024.01.25 |