알고리즘/프로그래머스
-
[프로그래머스 / Python] 가장 큰 수 | 초코더알고리즘/프로그래머스 2020. 1. 9. 17:20
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 -numbers의 길이는 1 이상 100,000 이하입니다. -numbers의 원소는 0 이상 1,000 이하입니다. -정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 1..
-
[프로그래머스 / Python] H-Index | 초코더알고리즘/프로그래머스 2020. 1. 9. 16:22
문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h가 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한 사항 -과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. -논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 citations retur..
-
[프로그래머스 / Python] 콜라츠 추측 | 초코더알고리즘/프로그래머스 2020. 1. 8. 22:31
문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 -입력된 수, num은 1 이상 8000000 미만인 정수입니다. 입출력 ..
-
[프로그래머스 / Python] 최대공약수 최소공배수 | 초코더알고리즘/프로그래머스 2020. 1. 8. 22:17
문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 사항 -행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 n m return 3 12 [3,12] 2 5 [1,10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 접근법 우선 n의 모든 약수와 m의 모든 약수를 각각의 리스트에 저장해두었습니다. 그리고 n리스트, m리스트에 공통되게 들어있는 값 중 가장 큰수를 최대공약수로 리턴..
-
[프로그래머스 / Python] 하샤드 수 | 초코더알고리즘/프로그래머스 2020. 1. 8. 21:38
문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 사항 -x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 예 #3 11의 모든 자릿수의 ..
-
[프로그래머스 / Python] 평균 구하기 | 초코더알고리즘/프로그래머스 2020. 1. 8. 21:16
문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한 사항 -arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr return [1,2,3,4] 2.5 [5,5] 5 접근법 sum()함수와 len()함수를 이용하여 풀었습니다. 나의 코드 def solution(arr): return sum(arr)/len(arr)
-
[프로그래머스 / Python] 핸드폰 번호 가리기 | 초코더알고리즘/프로그래머스 2020. 1. 8. 21:11
문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 사항 -s는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_number return 01033334444 *******4444 027778888 *****8888 접근법 저는 두가지 방법으로 생각해보았는데 첫번째 방법이 왜 오류가 나는지 잘모르겠습니다! 1. 문자열의 앞에서부터 len(phone_number) - 4 까지 "*"로 바꿔줍니다. 반복문을 사용하고 replace함수를 사용했습니다. 2. l..
-
[프로그래머스 / Python] 약수의 합 | 초코더알고리즘/프로그래머스 2020. 1. 6. 17:32
문제 설명 정수 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입니다. 접근법 우선 반복문으로 n의 약수(value)들을 구해줍니다. 그리고 구한 약수들을 value_sum에 저장해둡니다. 나의코드 def solution(n): value = 0 value_sum = 0 for value in range(1,n+1): if n % value == 0: value_sum += valu..