본문 바로가기
  • Jetpack 알아보기

프로그래머스 - JAVA/Level 150

[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.. 2021. 4. 1.
[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.. 2021. 4. 1.
[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;.. 2021. 4. 1.
[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) + .. 2021. 4. 1.
[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.. 2021. 4. 1.
[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].. 2021. 4. 1.
[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.. 2021. 4. 1.
[JAVA] 프로그래머스 Lv.1 : 소수 만들기 이 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 예제: Input: [1,2,3,4] Output: 1 제한 조건: nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. Solution #1 class Solution { public int solution(int[] nums) { int answer = 0; for (int i = 0; i < nums.lengt.. 2021. 3. 31.
[JAVA] 프로그래머스 Lv.1 : 직사각형 별찍기 예제: n m result 5 3 ***** ***** ***** 2 3 ** ** ** 제한 조건: n과 m은 각각 1000 이하인 자연수입니다. Solution #1 import java.io.*; import java.util.StringTokenizer; public class Solution { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer tokenizer = ne.. 2021. 3. 31.
[JAVA] 프로그래머스 Lv.1 카카오 코딩테스트 비밀지도 프로그래머스 Lv.1 2018 KAKAO BLIND RECRUITMENT 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1과 지도 2는 각각 정수 배열로 암.. 2020. 4. 2.