본문 바로가기

Problem Solving/Programmers

[프로그래머스] Level 1 자릿수 더하기/이상한 문자 만들기/약수의 합

자릿수 더하기.py

문제 설명

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

 

제한사항

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

문제 풀이

def solution(n):
    l = list(map(int, str(n)))
    return sum(l)

n을 문자열로 바꾼 후 map함수를 사용해 각 자릿수를 int형으로 바꿨다.

이를 리스트로 만들어 l로 정의했다.

sum함수를 사용해 리스트의 합을 출력했다.

 

한 줄 출력도 가능가능❗

def solution(n):
    return sum(list(map(int, str(n))))

 

이상한 문자 만들기.py

문제 설명

1)문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 2)하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 3)짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

문제 풀이

def solution(s):
    l = s.split(' ')
    a = []
    for i in l:
        for j in range(len(i)):
            if j % 2 == 1:    #홀수 자리인 경우(대->소)  
                a.append(i[j].lower())
            else:      #짝수 자리인 경우(소->대)
                a.append(i[j].upper())
        a.append(' ')
    return (''.join(a[:-1]))

문자열 s의 단어들은 하나 이상의 공백으로 구분되어 있기 때문에 s.split(' ')을 사용했다.

새로운 문자열을 넣을 빈 리스트 a를 만들었다.

 

첫 번째 for문에서는 단어 단위로 구분했다.

두 번째 for문에서는 if 문을 사용해 단어의 짝/홀수 인덱스를 구분했다.

구분에 따라 변환한 알파벳은 append 함수를 사용해 리스트 a에 추가했다.

단어 사이 띄어쓰기를 위해 for문 사이 a.append(' ')를 넣었다.

 

문자열 출력 시 join 함수를 사용했고, 마지막 띄어쓰기는 리스트 슬라이싱으로 제외시켰다.

* upper, lower 함수는 소문자를 대문자로, 대문자를 소문자로 바꾸며 바꿀 필요가 없는 경우 원래 문자열을 반환한다.

 

처음에 문자열 s 자체를 바꾸려다 시간이 엄청 걸렸다🤦‍♂️

 

약수의 합.py

문제 설명

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

 

제한 사항

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

문제 풀이 

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

정수 n의 약수를 담을 빈 리스트 l을 만들었다.

변수 i의 범위가 1부터 n+1까지인 반복문을 만들었다.

만약 n을 i로 나눴을 때 나머지가 0이면, 즉 i가 n의 약수이면 i를 l에 추가했다.

sum 함수를 사용해 l의 합을 출력했다.

 


 

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

 

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr

 

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr