전체 글 192

[JAVA] 프로그래머스 Lv.1 : 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 예제: Input: 121 Output: 144 Input: 3 Output: -1 제한 조건: n은 1이상, 50000000000000 이하인 양의 정수입니다. Solution #1 class Solution { public long solution(long n) { double sqrt = Math.sqrt(n); return (sqrt-(int)sqrt) > 0 ? -1 : (long) Math.pow(sqrt + 1, 2); } } Result #1 💡 양의 정수 n이 어떤 수..

[JAVA] 프로그래머스 Lv.1 : 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 예제: Input: [4, 3, 2, 1] Output: [4, 3, 2] Input: [10] Output: [-1] 제한 조건: arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. Solution #1 class Solution { public int[] solution(int[] arr) { int length = arr.length; int min..

[JAVA] 프로그래머스 Lv.1 : 짝수와 홀수

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 예제: Input: 3 Output: "Odd" Input: 4 Output: "Even" 제한 조건: num은 int 범위의 정수입니다. 0은 짝수입니다. Solution #1 class Solution { public String solution(int num) { return (num % 2 == 0) ? "Even" : "Odd"; } } Result #1 💡 삼항 연산자를 사용하면 굉장히 간단한 문제다. More Algorithm! 👇👇 github.com/ggujangi/ggu.programmers ggujangi/ggu.programmers 프로그래머스 알고리즘, JAV..

[JAVA] 프로그래머스 Lv.1 : 최대공약수와 최소공배수

예제: n m return 3 12 [3, 12] 2 5 [1, 10] 제한 조건: 두 수는 1이상 1000000이하의 자연수입니다. Solution #1 class Solution { public int[] solution(int n, int m) { int temp = 1; int originM = m, originN = n; while (temp!=0){ temp = m % n; m = n; n = temp; } return new int[]{m, (originM/m) * (originN/m) * m}; } } Result #1 💡 유클리드 호제법을 이용하여 최대공약수를 구한다. 최대공약수를 구하면 공식을 통해 최소 공배수도 구할 수 있다. More Algorithm! 👇👇 github.com/gg..

[JAVA] 프로그래머스 Lv.1 : 콜라츠 추측

예제: n result 6 8 16 4 626331 -1 제한 조건: 입력된 수, num은 1 이상 8000000 미만인 정수입니다. Solution #1 class Solution { public int solution(int num) { int answer = 0; while (num != 1) { if (num % 2 == 0) { num = num / 2; } else if (num % 2 == 1) { num = num * 3 + 1; } answer++; if (answer == 500) { answer = -1; break; } } return answer; } } Result #1 💡 조건을 잘 읽어보고, while 반복문과 if 조건문을 잘 이용하면 어렵지 않은 문제이다. More Alg..

[JAVA] 프로그래머스 Lv.1 : 평균 구하기

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 예제: arr return [1, 2, 3, 4] 2.5 [5, 5] 5 제한 조건: n과 m은 각각 1000 이하인 자연수입니다. Solution #1 class Solution { public double solution(int[] arr) { double answer = 0; for (int i : arr) { answer += i; } return answer / arr.length; } } Result #1 💡 for 반복문 + 더하기, 나누기 연산 사용 배열의 모든 정수를 더하고, 배열의 길이만큼 나누기 연산을 하는 간단한 문제이다. Solution #2 import java.util.Arrays;..

[JAVA] 프로그래머스 Lv.1 : 하샤드 수

예제: arr return 10 true 12 true 11 false 13 false 제한 조건: x는 1 이상, 10000 이하인 정수입니다. Solution #1 class Solution { private int sum = 0; public boolean solution(int x) { String.valueOf(x).chars().forEach(c -> sum += c - '0' ); return x % sum == 0; } } Result #1 💡 chars() 함수를 통해 stream으로 만들고, forEach문으로 각 자릿수를 더해준다. Solution #2 class Solution { public boolean solution(int x) { int sum = (x / 10000) + ..

[JAVA] 프로그래머스 Lv.1 : 핸드폰 번호 가리기

예제: phone_number return "01033334444" "*******4444" "027778888" "*****8888" 제한 조건: s는 길이 4 이상, 20이하인 문자열입니다. Solution #1 class Solution { public String solution(String phone_number) { StringBuilder answer = new StringBuilder(); for (int i = 0; i = phone_number.length() - 4) answer.append(phone_number.charAt(i)); else answer.append("*"); } return answer.toSt..

[JAVA] 프로그래머스 Lv.1 : 행렬의 덧셈

예제: arr1 arr2 return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] 제한 조건: 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. Solution #1 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr1[0].length]; for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr1[0].length; j++) { answer[i][j] = arr1[i][j] + arr2[i][j]..

[JAVA] 프로그래머스 Lv.1 : x만큼 간격이 있는 n개의 숫자

예제: x n answer 2 5 [2, 4, 6, 8, 10] 4 3 [4, 8, 12] -4 2 [-4, -8] 제한 조건: x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. Solution #1 class Solution { public long[] solution(long x, int n) { long[] answer = new long[n]; for (int i = 0; i < n; i++) { answer[i] = x * (i + 1); } return answer; } } Result #1 💡 간단한 문제이지만, 제한 조건에 따라 x 파라미터를 long 타입으로 바꿔줘야 하는 함정(?)이 있다. More Algorithm! 👇👇 github..

728x90