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

또상·2022년 3월 2일
0

Algorithm

목록 보기
43/133
post-thumbnail

자릿수 더하기

문제 / 풀이.py

def solution(n):
    answer = 0
    
    while n > 0:
        answer += n % 10
        n = int(n / 10)
    
    return answer



약수의 합

문제 / 풀이.py

import math

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



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

문제 / 풀이.py

def solution(n):
    answer = ''
    
    for i in range(n):
        answer += "수" if i % 2 == 0 else "박"
    
    return answer



소수 찾기

문제 / 풀이.py

에라토스테네스의 체가 먼저 떠오르긴 했는데, 일단 정석대로 풀었다. 효율성 검사하면 망하겠구만~ 했는데... 통과했다...

isPrime 을 루트로 했기 때문에 최대 1000 * 1000 번이라서 그런듯

import math

def isPrime(n):
    if n == 1:
        return False
    
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    else:
        return True

def solution(n):
    answer = 0
    
    for i in range(1, n+1):
        if isPrime(i):
            answer += 1

    return answer



서울에서 김서방 찾기

문제 / 풀이.py

def solution(seoul):
    for i in range(len(seoul)):
        if seoul[i] == "Kim":
            return "김서방은 " + str(i) + "에 있다"
        
    return '김서방은 없다'



문자열 다루기 기본

문제 / 풀이.py

def solution(s):
    if len(s) != 4 and len(s) != 6:
        return False
    
    for c in s:
        if not c.isdigit(): #if ord(c) < 48 or 57 < ord(c):
            return False
    
    return True

제발 좀 외우자.. chr ord A 65 a 97 0 48



문자열 내림차순으로 배치하기

문제 / 풀이.py

def solution(s):    
    return ''.join(sorted(s, key=lambda x:-ord(x)))
# sort 를 안쓰고 해보고 싶어서 해당 코드도 작성해 보았다.
def solution(s): 
    answer = []
    for c in s:
        if len(answer) == 0:
            answer.append(c)
            continue
        
        # 정렬 알고리즘.
        for i in range(len(answer)):
            if ord(c) > ord(answer[i]):
                answer.insert(i, c)
                break
        else:
            answer.append(c)
        
    return ''.join(answer)
profile
0년차 iOS 개발자입니다.

0개의 댓글