[Algorithm🧬] 프로그래머스 1단계 - 2

또상·2022년 2월 21일
0

Algorithm

목록 보기
38/133
post-thumbnail

콜라츠 추측

문제 / 풀이.py

def solution(num):
    answer = 0
    
    while num != 1:
        if answer >= 500:
            return -1
        
        if num % 2 == 0:
            num /= 2
        else:
            num = num * 3 + 1
        
        answer += 1
    
    return answer



최대공약수와 최소공배수

문제 / 풀이.py

def maXX(n, m):
    if n < m:
        n, m = m, n
    if m == 0:
        return n
    
    return maXX(m, n%m)
    
def solution(n, m):
    maXX = maX(n, m)
    return [maXX, n * m / maXX]

최대공약수(greatest common factor)는 유클리드 호제법을 이용해서 구했고, 최소공배수(Least Common Multiple)는 아래의 식을 사용해서 구했다! 영어 이름 맨날 잊어버리니까 주의...



짝수와 홀수

문제 / 풀이.py

def solution(num):
    return "Odd" if num % 2 == 1 else "Even"



제일 작은 수 제거하기

문제 / 풀이.py

def solution(arr):
    arr.remove(min(arr)) 
    return [-1] if len(arr) == 0 else arr

이상하게 remove 랑 min 은 알면서도 생각이 잘 안나는데, 문제가 간결하니까 생각해서 풀 수 있었다. 앞으로도 잘 생각해야하는데...!



정수 제곱근 판별

문제 / 풀이.py

import math

def solution(n):
    square = math.sqrt(n)
    if square == int(square):
        return math.pow(square + 1, 2)
    return -1



자연수 뒤집어 배열로 만들기

문제 / 풀이.py

  1. 파이썬이라 가능한 느낌으로
def solution(n):
    answer = []
    for c in str(n):
        answer.append(int(c))
    
    return answer[::-1]
  1. 만약.. C였다면...
def solution(n):
    answer = []
    while n > 0:
        answer.append(n%10)
        n = int(n/10)
        
    return answer



정수 내림차순으로 배치하기

문제 / 풀이.py

def solution(n):
    arr = sorted([int(c) for c in list(str(int(n)))], key=lambda x: -x)
    return int(''.join([str(i) for i in arr]))

테스트 케이스 2, 3, 11 에서 에러가 났는데... 쉬운 문제라 에러가 날리가 없어서 검색해보니, 처음 입력에 int(n) 처리를 해줘야한다고 했다. 입력값은 정수라며... 정수라며!!!!!

profile
0년차 iOS 개발자입니다.

0개의 댓글