본문 바로가기

Java/알고리즘63

콜라츠 추측 단순하게 while문으로 문제에 나온 조건들을 맞춰주고, cnt로 시도횟수 세주고 500번 초과되면 -1을 return하면 되는 간단한 문제. public static int solution(int num) { int cnt = 0; while(num != 1){ if(cnt > 500){ return -1; } if(num % 2 == 0){ num /= 2; }else{ num = num * 3 + 1; } cnt++; } return cnt; } 아무리봐도 이게 맞는데 자꾸 테스트케이스 3번626331에서 488이나온다. 테스트케이스가 잘못된줄 알았다. int의 최대값은 2147483647인데 그게 넘어가서 오류가 나나 싶었다. 그래서 파라미터의 int를 long형으로 바꿔주니 바로 됐다. 어이가 .. 2024. 1. 9.
두 정수 사이의 합 뭐,,,이문제는 5분도안되서 풀긴했는데 일단 올리긴 올려야겠다. 문제를 보고 1분만에 풀겠네ㅋㅋ했는데 제한조건의 세번째 조건을 안보고 풀었다가 엥?왜실패? 했다. a가 큰경우, b가 큰경우를 따로 해주고나니 바로 성-공 lv1을 푸니 자신감이 상승한다. ㅇ 내풀이 public long solution(int a, int b) { long sum = 0; if(a > b){ long i = a; while(i >= b){ sum += i; i--; } }else{ long i = b; while(i >= a){ sum += i; i--; } } return sum; } so e-z lv2 복습하러가야징 2024. 1. 8.
하샤드 수 일단 내가 푼 방법은 아래와 같다. public boolean solution(int x) { boolean answer = false; //x를 각 자리수별로 split 하기 위해 String으로 변환 String xToStr = String.valueOf(x); //변환한 x를 각자리수별 split String[] xStr = xToStr.split(""); //다시 int형으로 넣을배열하나 생성 int[] xInt = new int[xStr.length]; //int형배열에 집어넣기 for(int i = 0; i < xStr.length; i++){ xInt[i] = Integer.parseInt(xStr[i]); } //각자리수의 합 초기화 int sum = 0; //각자리수의합 집어넣기 for(.. 2024. 1. 5.
정수 내림차순으로 배치하기 lv1 짜리 문제라 쉽게 다가갔는데 이게 웬걸? 생각보단 어려웠다. 내 풀이를 보자. import java.util.*; class Solution { public long solution(long n) { //주어진n을 String으로 바꾸고 String longToString = Long.toString(n); //String 배열 nums에 하나씩 넣기 String [] nums = longToString.split(""); //nums 를 long형으로 바꿔서 넣을 longNums 초기화 long[] longNums = new long[nums.length]; //long배열 longNums에 하나씩 넣기 for(int i = 0; i < nums.length; i++){ longNums[i] =.. 2024. 1. 4.