본문 바로가기

Algorithm

(402)
[프로그래머스(Java)] 최대공약수와 최소공배수 Level. 1 문제 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 - 두 수는 1이상 1000000이하의 자연수입니다. 풀이 class Solution { // 유클리드호제법 public int gcd(int n, int m){ if(n%m == 0) return m; return gcd(m, n%m); } public int[] solution(int n, int m) { int[] answer = {0,0}; /* for(int ..
[프로그래머스(Java)] 콜라츠 추측 Level. 1 문제 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을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 제한..
[프로그래머스(Java)] 정수 내림차순으로 배치하기 - toString() toCharArray StringBuilder parseLong , Stream Level. 1 문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 - n은 1이상 8000000000 이하인 자연수입니다. 풀이 import java.util.*; class Solution { public long solution(long n) { String str = Long.toString(n); long answer = 0; char[] ch = str.toCharArray(); Arrays.sort(ch); str = new StringBuilder(new String(ch)).reverse().toString(); return Lon..
[프로그래머스(Java)] 하샤드 수 - Stream Level. 1 문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. * 제한 조건 - x는 1 이상, 10000 이하인 정수입니다. 풀이 class Solution { public boolean solution(int x) { int y = x; int num = 0; while(y>0){ num += y%10; y/=10; } return x%num==0?true:false; } } 다른 풀이 class Solution { public boolean solution(int x..
[프로그래머스(Java)] 삼총사 - DFS Level. 1 문제 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수..
[프로그래머스(Java)] 핸드폰 번호 가리기 - toCharArray() String.valueOf() toString() , 여러 replace() Level. 1 문제 풀이 class Solution { public String solution(String phone_number) { String answer; // 주어진 문자열을 문자 어레이로 변환 char[] ch = phone_number.toCharArray(); for(int i=0; i> .(?=.{4}) : 맨 뒤 4자리 숫자를 제외하고 임의의 문자 하나를 선택한다. replace() , replaceAll() , replaceFirst() replace(찾을문자열, 바꿀문자열) : 변경하고자 하는 문자열을 찾아 치환한다. replaceAll(정규식 또는 기존문자, 대체문자) : 문자열에서 특정 문자를 다른 문자로 전체 치환한다. 정규식을 사용하지 않으면 replace와 동일하다. r..
[프로그래머스(Java)] 행렬의 덧셈 Level. 1 문제 풀이 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int row = arr1.length; int cell = arr1[0].length; int[][] answer = new int[row][cell]; for(int i=0; i
[프로그래머스(Java)] 소수 만들기 Level. 1 문제 풀이 import java.lang.Math; class Solution { public boolean sosu(int num){ for(int i=2; i