본문 바로가기

알고리즘 공부

(207)
[프로그래머스] 정수 내림차순으로 배치하기 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)-..
[프로그래머스] x만큼 간격이 있는 n개의 숫자 https://programmers.co.kr/learn/courses/30/lessons/12954 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. programmers.co.kr [정답] def solution(x, n): answer = [] for i in range(0,n): answer.append(x+x*i) return answer