[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개의 댓글

관련 채용 정보