문제 설명


임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한조건

 

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

 

입출력 예

 

n return
121 144
3 -1

 

입출력 예 설명


입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

 

나의 풀이

 

def solution(n):
    answer = -1
    for i in range(1,n+1):
        if n // i == i and n % i == 0:
            answer= (i+1)**2
            break
    return answer

1. answer를 -1로 설정합니다. (제곱이 아닐 경우를 위해)
2. 1부터 n까지에서 n이 어떤 i의 제곱인지 확인해서 i의 제곱이면 answer를 i+1의 제곱으로 바꿉니다.
3. answer를 리턴합니다.

다른 사람의 풀이

 

def solution(n):
    sqrt = n ** (1/2)

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

n의 제곱근을 구해 나눠 떨어지면 제곱근이 있는 것으로 생각해서 (sqrt + 1) ** 2을 리턴하고 나눠 떨어지지 않으면 -1을 리턴합니다.


프로그래머스 '정수 제곱근 판별' : https://programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함�

programmers.co.kr

 

문제 설명


함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한조건

 

  • n은 1이상 8000000000 이하인 자연수입니다.

 

입출력 예

 

n return
118372 873211

 

나의 풀이

 

def solution(n):
    n=list(str(n))
    n.sort(reverse=True)
    n=int(''.join(n))
    return n

1. n을 str형으로 바꿔 리스트를 만들고 내림차순으로 정렬해줍니다.
2. 리스트 n의 각 값들을 합쳐 int형으로 바꿔 리턴합니다.

 


프로그래머스 '정수 내림차순으로 배치하기' : https://programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이��

programmers.co.kr

 

문제 설명


자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한조건

 

  • n은 10,000,000,000이하인 자연수입니다.

입출력 예

 

n return
12345 [5,4,3,2,1]

 

나의 풀이

 

def solution(n):
    n=list(str(n))
    n.reverse()
    n=list(map(int,n))
    return n

1. n을 str형의 리스트로 만들고 뒤집습니다.
2. n을 int형의 리스트로 만들어 리턴합니다.

 

다른 사람의 풀이

 

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

n을 str형으로 만들어 뒤집고 int형의 리스트로 만들어 리턴합니다.


프로그래머스 '자연수 뒤집어 배열로 만들기' : https://programmers.co.kr/learn/courses/30/lessons/12932

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

programmers.co.kr

 

문제 설명


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

제한조건

 

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

입출력 예

 

N answer
123 6
987 24

 

입출력 예 설명


입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

 

나의 풀이

 

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

1. n을 str형으로 바꾸고 각 자리마다 int형으로 리스트 a에 저장합니다.
2. 리스트 a의 합을 리턴합니다.

 

다른 사람의 풀이

 

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

n을 str형으로 바꾸고 for문을 이용해 합을 구해 리턴합니다.


프로그래머스 '자릿수 더하기' : https://programmers.co.kr/learn/courses/30/lessons/12931

 

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

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

programmers.co.kr

 

문제 설명


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

제한조건

 

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

 

입출력 예

 

s return
try hello world TrY HeLlO WoRlD

 

입출력 예 설명


try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

나의 풀이

 

def solution(s):
    s=s.split(' ')
    answer=[]
    for i in range(len(s)):
        a=list(s[i])
        for j in range(len(a)):
            if j % 2 == 0:
                answer.append(a[j].upper())
            else:
                answer.append(a[j].lower())
        answer.append(' ')
    answer.pop()
    return ''.join(answer)

 

1. s를 공백을 기준으로 나눕니다.
2. 각 단어를 위치에 따라 짝수이면 대문자로 바꾸고 홀수이면 소문자로 바꿔 answer에 넣어줍니다.
3. 각 단어가 끝날때마다 공백을 하나 넣어주고 마지막 단어가 끝나고는 공백을 하나 제거합니다.
4. answer를 합쳐 리턴합니다.


프로그래머스 '이상한 문자 만들기' : https://programmers.co.kr/learn/courses/30/lessons/12930

 

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

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

programmers.co.kr

 

문제 설명


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

제한조건

 

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

입출력 예

 

n return
12 28
5 6

 

입출력 예 설명


입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

나의 풀이

 

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

1. 1부터 n까지 n의 약수이면 값을 더해 리턴합니다.


프로그래머스 '약수의 합' : https://programmers.co.kr/learn/courses/30/lessons/12928

 

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

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

programmers.co.kr

 

+ Recent posts