본문 바로가기

Programmers

(188)
콜라츠 추측 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)로 제곱을 더 간단히 할 수도 있다.
평균 구하기 1 2 3 4 5 6 import java.util.stream.IntStream; class Solution { public double solution(int[] arr) { return (double) IntStream.of(arr).sum() / arr.length; } } Colored by Color Scripter cs 리스트와 배열은 합과 평균을 한 번에 구할 수 있다. 배열의 경우엔 위와 같이 구하면 되고 리스트의 경우에는 리스트.stream().mapToInt(Integer::intValue).sum() 와 같이 구한다. IntStream.of(arr).average()로 평균도 바로 구할 수 있지만 OptionalDouble 형으로 출력되기 때문에 orElse문을 붙여야 한다. Int..
제일 작은 수 제거하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.*; class Solution { public int[] solution(int[] arr) { int[] answer = {}; int[] tmp = arr.clone(); // 배열 복사 int i = 0; if (arr.length == 1) answer = new int[] { -1 }; else answer = new int[arr.length - 1]; Arrays.sort(tmp); // 정렬 for (int a : arr) { if (a != tmp[0]) { answer[i] = a; i++; } } return answer; } } Colored by C..
자연수 뒤집어 배열로 만들기 1 2 3 4 5 6 7 8 9 10 11 12 13 import java.util.*; class Solution { public long[] solution(long n) { int len = (int) Math.log10(n) + 1, i = 0; // 수 길이 구하기 long[] answer = new long[len]; while (n != 0) { answer[i] = n % 10; n /= 10; i++; } return answer; } } Colored by Color Scripter cs 자리수를 구하기 위해 Math 함수를 썼다. "" + n, String.valueOf(n), Long.toString(n)와 같이 String으로 변환 후 length 함수로 구하는 방법도 있다.
약수의 합 1 2 3 4 5 6 7 8 9 10 11 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i i = 1부터 i
문자열 내림차순으로 배치하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.*; class Solution { public String solution(String s) { String answer = ""; StringBuilder sb = new StringBuilder(); String[] arr = new String[s.length()]; int i; for (i = 0; i
문자열 다루기 기본 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public boolean solution(String s) { boolean answer = true; if(s.length() != 4 && s.length() != 6) answer = false; else for (int i = 0; i