티스토리 뷰

코드카타/알고리즘

01.08 코드카타

경민212 2025. 1. 8. 16:02

* 없는 숫자 더하기

https://school.programmers.co.kr/learn/courses/30/lessons/86051?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. 

numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ numbers의 길이 ≤ 9
  • 0 ≤ numbers의 모든 원소 ≤ 9
  • numbers의 모든 원소는 서로 다릅니다.

정답

def solution(numbers):
    answer = 0
    for i in range(1, 10):
        if i not in numbers:
            answer = answer + i
    return answer

 

 

* 나머지가 1이 되는 수 찾기

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.


제한사항

  • 3 ≤ n ≤ 1,000,000

정답

def solution(n):
    answer = []

    for i in range(1, n):
        if n % i == 1:
            answer.append(i)
    return min(answer)

 

 

* 자릿수 더하기

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

제한사항

  • N의 범위 : 100,000,000 이하의 자연수

정답 

def solution(N):
    result = 0
    for i in str(N):
        result += int(i)
    return result

 

 

* 약수의 합

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

나의 오답

def solution(n):
    result = 0
    for i in range (1, n+1):
        if n % i == 0:
            result.append(i)
    return sum(result)

result는 0으로 초기화했는데 append를 호출하려고 하는 것이 오류. 숫자(int)로 선언되어 리스트의 메서드인 append를 사용할 수 없다.

마지막 sum로 합산하는 과정은 result가 리스트일 때만 가능하다. 

 

수정한 정답

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

 

정답

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

'sum += i if n % i == 0 else 0'는 약수일 때 i를 더하고, 그렇지 않을 경우 0을 더해 아무런 변화가 없게 만든다.

이 방법은 간결하고 효율적이며, 약수를 리스트에 저장할 필요 없이 직접 합산하는 방식

'코드카타 > 알고리즘' 카테고리의 다른 글

01.15 코드카타  (0) 2025.01.15
12.24 코드카타  (0) 2024.12.24
12.19 코드카타  (0) 2024.12.19
12.17 코드카타 (1)  (0) 2024.12.17
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
글 보관함