본문 바로가기

Programmers/Level1

(66)
x만큼 간격이 있는 n개의 숫자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import java.util.*; class Solution { public long[] solution(int x, int n) { long[] answer = {}; long res = x; List list = new ArrayList(); for (int i = 0; i
행렬의 덧셈 1 2 3 4 5 6 7 8 9 10 11 12 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr1[0].length]; for (int i = 0; i
정수 내림차순으로 배치하기 1 2 3 4 5 6 7 8 9 10 11 import java.util.*; class Solution { public long solution(long n) { long answer = 0; char[] cArr = Long.toString(n).toCharArray(); Arrays.sort(cArr); StringBuilder sb = new StringBuilder(new String(cArr)).reverse(); answer = Long.parseLong(sb.toString()); return answer; } } Colored by Color Scripter cs Arrays.sort 할 때 Collectioins.reverseOrder 옵션 사용이 안 되기 때문에 StringBuilde..
핸드폰 번호 가리기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public String solution(String phone_number) { String answer = ""; StringBuilder sb = new StringBuilder(); for (int i = 0; i
하샤드 수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public boolean solution(int x) { boolean answer = true; int n = x; int res = 0; while (n != 0) { res += n % 10; n /= 10; } if (x % res != 0) answer = false; return answer; } } Colored by Color Scripter cs 각 자리수를 구할 때 String.valueOf(x).split("")으로 분할하는 방법도 있다.
최대공약수와 최소공배수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public int[] solution(int n, int m) { int a = n, b = m; int[] answer = new int[2]; // 유클리드 호제법 while (b != 0) { int r = a % b; a = b; b = r; } answer[0] = a; answer[1] = n * m / a; return answer; } } Colored by Color Scripter cs 유클리드 호제법으로 구한 최대공약수 a를 n * m에 나누게 되면 최소공배수가 된다.
콜라츠 추측 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int solution(int num) { long lNum = num; int answer = 0; while (lNum != 1) { if (lNum % 2 == 0) { lNum /= 2; } else { lNum = lNum * 3 + 1; } answer++; if(answer == 500) { answer = -1; break; } } return answer; } } Colored by Color Scripter cs num에 3을 곱할 때 int의 범위를 넘어가는 경우가 생긴다. 그러므로 long으로 해결해야 한다.
정수 제곱근 판별 1 2 3 4 5 6 7 8 9 10 11 class Solution { public long solution(long n) { long answer = 0; long sqrt = (long) Math.sqrt(n); if (n == sqrt * sqrt) answer = (sqrt + 1) * (sqrt + 1); else answer = -1; return answer; } } Colored by Color Scripter cs (long) Math.pow((sqrt + 1), 2)로 제곱을 더 간단히 할 수도 있다.