본문 바로가기

Algorithm/Brute Force

(Python3) - 프로그래머스(코딩 기초 트레이닝) : 조건에 맞게 수열 변환하기 2

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181881

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

전수조사로 해결한 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

현재 array cur_arr과 반복 횟수 x를 선언 후 적절히 초기화합니다.

📔 풀이과정

while loop를 수행하며 다음을 진행합니다.1. prev_arr를 선언해 현재 cur_arr값을 deep copy해줍니다.2. calculate_arr사용해서 홀수, 짝수에 대한 조건에 따라 cur_arr값을 갱신해줍니다.3. 만약 prev_arr과 cur_arr이 같다면 x, x+1번 수행한 결과가 같으므로 break합니다.4. 아니라면 x에 1을 더해줍니다.

📔 정답 출력 | 반환

x를 반환합니다.


📕 Code

📔 Python3

import copy
def is_same_arr(cur_arr, prev_arr):
    for i in range(0, len(cur_arr)):
        if cur_arr[i] != prev_arr[i]:
            return False
    return True

def calculate_arr(arr):
    for i in range(0, len(arr)):
        a = arr[i]
        if a >= 50 and a % 2 == 0:
            a //= 2
        elif a < 50 and a % 2 == 1:
            a = a * 2 + 1
        arr[i] = a
        
def solution(arr):
    cur_arr = arr
    x = 0
    while True:
        prev_arr = cur_arr.copy()
        calculate_arr(cur_arr)
        if is_same_arr(cur_arr, prev_arr):
            break
        x += 1
        
    return x

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.