[ALGORITHM] Programmers ALGORITHM 연습문제 Lv1 (2)

1 minute read


ALGORITHM Übung - Programmers

  • 알고리즘 문제 풀이를 통한 코딩 테스트 연습

정수 제곱근 판별

  • 21/10/2021

from math import sqrt

def solution(n):
    return int((sqrt(n)+1)**2) if sqrt(n) == int(sqrt(n)) else -1

# 다른 사람의 좋은 풀이
def solution(n):
    sqrt = n ** (1/2)

    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return -1

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

  • 21/10/2021

def solution(n):
    num_list = sorted([i for i in str(n)], reverse=True)
    result = ''
    for i in num_list:
        result += i

    return int(result)

# 다른 사람의 좋은 풀이
def solution(n):
    ls = list(str(n))
    ls.sort(reverse = True)
    return int("".join(ls))

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

  • 21/10/2021

def solution(n):
    result = ''
    for i in str(n):
        result = i + result

    return [int(i) for i in result]

# 다른 사람의 좋은 풀이
def solution(n):s
    return [int(i) for i in str(n)][::-1]

자릿수 더하기

  • 21/10/2021

def solution(n):
    return [int(i) for i in result]

# 다른 사람의 좋은 풀이
def solution(n):
    if n < 10:
        return n
    return (n % 10) + solution(n // 10)

이상한 문자 만들기

  • 21/10/2021

def solution(s):
    str_list = s.split(" ")
    result = []

    for str in str_list:
        word = ""
        for i,v in enumerate(str):
            if (i+1) % 2 == 1:
                word += v.upper()
            else:
                word += v.lower()
        result.append(word)

    return " ".join(result)

약수의 합

  • 21/10/2021

def solution(n):
    return sum([i for i in range(1,n+1) if n % i == 0])

# 다른 사람의 좋은 풀이
def solution(n):
    return n + sum([i for i in range(1, (n // 2) + 1) if n % i == 0])

시저 암호

  • 21/10/2021

def solution(s, n):
    lower_list = 'abcdefghijklmnopqrstuvwxyz'
    upper_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    result = []

    for i in s:
        if i == ' ':
            result.append(' ')
        elif i.islower():
            new = lower_list.find(i) + n
            result.append(lower_list[new%26])
        else:
            new = upper_list.find(i) + n
            result.append(upper_list[new % 26])

    return ''.join(result)

문자열을 정수로 바꾸기

  • 22/10/2021

def solution(s):
    if s[0] == '+':
        return int(s)
    elif s[0] == '-':
        return int(s)
    else:
        return int(s)

# 다른 사람의 좋은 풀이
def solution(s):
    return int(s)

수박수박수박수박수박수?

  • 22/10/2021

def solution(n):
    return '수박'*(n//2) if n % 2 == 0 else '수박'*(n//2) + '수'

# 다른 사람의 좋은 풀이
def solution(n):
    return "수박"*(n//2) + "수"*(n%2)

소수 찾기

  • 23/10/2021

# 다른 사람의 좋은 풀이
def solution(n):
    # all possible answer
    num=set(range(2,n+1))

    # Sieve of Eratosthenes, delete number and its multiple(starting from 2*number) 
    for i in range(2,n+1):
        if i in num:
            num-=set(range(2*i,n+1,i))
    return len(num)