본문 바로가기

알고리즘 공부/프로그래머스 > Python3

(44)
[프로그래머스] 정수 제곱근 판별 https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr [정답] 1. 1~n+1까지 반복문을 돌면서, 만약 i**2==n, 즉 i가 n의 제곱근이면 answer=(i+1)**2를 넣어준다. ( 어짜피 for문을 다 돌 경우는 별로 없으니 처음에 for문의 마지막 값을 n으로 지정하였다. 그러나 정확성 테스트에서 하나의 실패가 떴다. 문제의 제한사항을 보면, 'n은 1이상 50000000..
[프로그래머스] 정수 내림차순으로 배치하기 https://programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr [정답] 1. n의 자료형을 string으로 바꾸어 list형태로 n에 넣어준다. 2. n을 내림차순으로 바꿔준 뒤, 문자열 answer_str에 하나씩 넣어준다. 3. answer_str을 int형태로 바꾸어 answer에 넣는다. 4. answer을 return한다.
[프로그래머스] 최대공약수와 최소공배수 https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr [정답] 1. 최대공약수를 구하기 위해 n,m중에서 작은 값을 min_num으로 정한다. 2. 1~min_num+1동안 반복문을 돌면서, n,m을 나눌 수 있는 i를 찾는다. 3. 반복문을 돌 동안 i는 계속 갱신되고, 이것이 GCD(최대공약수)가 된다. 4. LCM(최소공배수)는 n*m/GCD이다. 5. GCD와 LCM을 리스트..
[프로그래머스] 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [정답] 1. participant와 completion을 sort한다. 2. 문제를 읽어보면, 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였다고 한다. 3. completion=participant-1이니, 0~len(completion)을 반복하면서 participant[i]와 completion[i]이 다를 경우, answ..
[프로그래머스] 제일 작은 수 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12935?language=python3 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr [정답] 1. 리스트 arr의 길이가 1이라면, -1을 return해주어야 하므로 answer에 -1값을 넣어준다. 2. 리스트 arr의 길이가 2이상이라면, answer에 arr을 넣어주고, answer에서 가장 작은 값을 remove해준다. 이 때 min()함수를 사용해준다. 3...
[프로그래머스] 콜라츠 추측 https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr [정답] def solution(num): answer = 0 for i in range(1,501): if num==1: break if num%2==0: num = num/2 answer+=1 else: num = num*3+1 answer+=1 if num!=1: answer = -1 return answer 코드를 다 작성하..
[프로그래머스] 하샤드 수 https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr [정답] def solution(x): answer = True sum = 0 a = str(x) for i in a: sum += int(i) if x%sum==0: answer = True else: answer= False return answer 문자열 '1234'를 for문을 돌려 i에 넣으면, i='1', i='2', i='..
[프로그래머스] 자연수 뒤집어 배열로 만들기 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 [정답1] #map함수 사용한 코드 def solution(n): answer=[] int_list = list(map(int,str(n))) #n을 문자열로 바꾸어서 list에 넣어주고 자료형을 int로 변환해 int_list을 정의 for i in range(len(int_list)-..