목록코딩테스트 연습 (18)
개발의 흔적
안녕하세요. 프로그래머스에 있는 "콜라츠 추측" 알고리즘 문제를 풀어보겠습니다. 문제 : 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 출력 : 6 8 16 4 626331 -1 코드 : * 문제 해설 * 입력된 정수의 값이 1이 될때까지 반복을 시킵니다. 입력된 수가 짝수라면 2로 나눕니다. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 그후 반복된 값에 대해선 count를 줍니다. 정수 : 6 6 % 2 = 3 3 * 3 + 1 = ..
안녕하세요. 프로그래머스에 있는 "최대공약수와 최소공배수" 알고리즘 문제를 풀어보겠습니다. 문제 : 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 출력 : 3 12 [3, 12] 2 5 [1, 10] 코드 : * 문제 해설 * 최대공약수 : 두가지의 값중 0으로 나누어떨어지는 공통적인 값중 가장 큰값 최소공배수 : 두가지의 값을 곱한값중 공통된 곱한값 * 코드 해설 * 최대공약수를 구하기 위해 바깥쪽 for문에 가장작은 값을 반복 시킨다. 반복을..
안녕하세요. 프로그래머스에 있는 "평균 구하기" 알고리즘 문제를 풀어보겠습니다. 문제 : 정수를 담고 있는 배열 arr의 평균값을 return하는 함수를 만들어야 합니다. 출력 결과 : [1,2,3,4] 2.5 [5,5] 5 코드 : * 문제 해설 * 배열의 전체 수 더한값을 배열의 길이만큼 나눈 값을 평균이라고한다. * 코드 해설 * 바깥쪽 for문은 정수 배열의 길이만큼 반복을 합니다. 그후 정수 배열의 인덱싱 값을 str문자열에 저장을 합니다. 왜냐, 배열 정수값은 배열 문자열이기에 바로 더할 수 가없습니다. 그렇기에 문자열로 저장후 다시 정수로 변환후 반복될때마다 값을 num에 차곡차곡 저장하여 값을 더합니다. 그후 저장되는 값이 double이기에 캐스팅을 하여 평균값을 구합니다. 더좋은 코드가있..
안녕하세요. 프로그래머스에 있는 "하샤드 수" 알고리즘 문제를 풀어보겠습니다. 문제 : 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수를 만드세요. 출력 결과 : 10 true 12 true 11 false 13 false 코드 * 문제 해설 * 숫자 : 10 양의 정수를 받은 후 문자열을 자른다. [0] : 1 [1] : 0 배열을 문자열에 저장 후 그 후 문자열을 정수로 변환 시킨후 값을 더한다. 더한값을 처음에 받아온 정수와 계산하여 0으로 나누어 떨어지면 하샤드 수 이다. * 코드 해설 * 정수 10값을 ..