본문 바로가기

Problem Solving/Programmers

[프로그래머스] Level 1 제일 작은 수 제거하기/정수 제곱근 판별/정수 내림차순으로 배치하기/자연수 뒤집어 배열로 만들기

제일 작은 수 제거하기.py

문제 설명

정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴하고, [10] 면 [-1]을 리턴합니다.

 

제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

 

문제 풀이

def solution(arr):
    if len(arr) == 1:
        return [-1]
    arr.remove(min(arr))
    return arr

만약 arr의 길이가 1이면 배열에 -1을 채워 반환한다.

arr의 최솟값을 min 함수로 찾고 remove 함수로 제거한 후 반환한다.

 

리스트에서 값을 삭제하는 방법은 다음과 같다.

  • clear(): 모든 요소 삭제
  • pop(): 지정한 인덱스를 삭제(지정하지 않으면 맨 마지막 요소를 삭제)
  • remove(): 지정한 값을 검색 후 첫 번째 값을 삭제
  • del 명령어: 지정한 인덱스를 삭제

 

이 중 최솟값을 찾아내 삭제해야 하기 때문에 remove 함수를 사용했다.

 

정수 제곱근 판별.py

문제 설명

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

 

제한 사항

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

 

문제 풀이

import math

def solution(n):
    x = int(math.sqrt(n))
    if x ** 2 != n:
        return -1
    return (x + 1) ** 2

제곱근을 구하기 위해 파이썬 math 모듈 sqrt 함수를 사용했다.

math.sqrt(n)의 값을 정수형으로 바꿔 x에 넣었다. 

x의 제곱이 n이 아닌 경우 -1을 반환했다.

 

원래 data(x)가 float면 -1을 반환하려 했는데, sqrt 반환 값이 소수점 첫째 자리까지 나와서 방식을 바꿨다.

예) math.sqrt(16) = 4.0

 

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

문제 설명

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

 

제한 조건

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

 

문제 풀이

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

문자열 n을 리스트로 변환했다.

sort 함수를 사용해 오름차순으로 정렬하고, reverse 함수를 사용해 뒤집었다.

join 함수를 사용해 리스트를 공백 없이 문자열로 합쳤다.

숫자로 출력하기 위해 결괏값을 int로 변환했다. 

 

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

문제 설명

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

 

제한 조건

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

 

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

문자열 n을 요소마다 숫자로 변환해 리스트 l로 만들었다.

reverse 함수로 리스트를 뒤집어 반환했다.

 


 

 

코딩테스트 연습 - 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

programmers.co.kr

 

 

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

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

programmers.co.kr

 

 

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

함수 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

programmers.co.kr