본문 바로가기
반응형

프로그래머스29

[Java][프로그래머스][Level 1] 최대공약수와 최소공배수 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 생각 최대공약수와 최소공배수에 대한 설명은 예시 하나를 들며 설명하겠다. 4 18이라는 숫자를 생각해보자. 4와 18의 공통 약수중 가장 큰 것이 최대공약수가 될 것이고, 이는 직관적으로 2가 나올 것이다. (중1 과정이기 때문에 대부분 바로 하실 것이라 믿는다!) 그리고 최소공배수는 36이 나온다. 최소공배수가 나오는 과정에 대.. 2019. 4. 30.
[Java][프로그래머스][Level 1] 제일 작은 수 제거하기 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 생각 문제 자체는 어렵지 않지만, 최대한 제한 조건과 원하는 바를 잘 파악하여 효율적인 코드를 만들어야 한다. [10] 이면 -1을 리턴한다. 이것은 원소가 하나만 있다면 그 원소를 제거하기 때문에 빈 배열이 생겨 -1이 나오는 것이다. 그렇다면 이를 맨 처음에 체크를 해줘서 원래 .. 2019. 4. 12.
[Java][프로그래머스][Level 1] 정수 내림차순으로 배치하기 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 생각 각 자리수를 내림차순으로 배치하려면 split이 필요하다. 하지만 숫자를 split() 함수를 쓸 수는 없으므로, String형으로 먼저 바꿔줘야한다! 어디선가 꿀팁을 배웠는데, 만약 int n = 3이 있으면 String n_toString = "" + n 으로 하면 순식간에 String형으로 바뀐다!! String으로 바꾼 후, 각 자릿수를 분리하고 정렬을 해준다. 후에 for문으로 10의 거듭제곱형태로 곱해가며 원래 수를 만들며.. 2019. 4. 11.
[Java][프로그래머스][Level 1] 자연수 뒤집어 배열로 만들기 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 생각 전에 풀었던 자릿수 더하기와 비슷한 문제이다. 먼저 n을 10으로 나눈 나머지를 구해 첫 배열값에 넣어주고 n = n/10을 하여 자릿수를 하나 줄여준다. 위 과정을 n이 0이 될 때까지 반복하면 끝날 것이다. 하지만 여기서 한 가지 더 생각해줘야 하는 것이 있다. 그것은 제한 조건!! n의 범위가 10,000,000,000 (백 억) 이다. 백 억은 int형의 범위를 가뿐하게 넘을 것이다. 이 기회에 byte, short, int, long의 범위를 살펴보자! byte -128 ~ 12.. 2019. 4. 9.
반응형