본문 바로가기

Java107

나누어 떨어지는 숫자 배열(향상된 for문 꿀팁 idx++) 배열에 대한 이해가 필요한 문제였다. 레벨1치고 고전했던 문제다. 현타가 좀 왔다. public static int[] solution(int[] arr, int divisor) { int[] resultArray; // 나누어 떨어지는 값 개수 계산 int count = 0; for (int num : arr) { if (num % divisor == 0) { count++; } } if (count == 0) { resultArray = new int[]{-1}; } else { // 나누어 떨어지는 값이 있는 경우 배열에 담고 정렬하기 resultArray = new int[count]; int index = 0; for (int num : arr) { if (num % divisor == 0) {.. 2024. 1. 16.
서울에서 김서방 찾기, "==" 와 ".equals()"의 차이 문제 참 재밌다ㅋㅋ 근데 너무쉽네 근데 IDE에서는 되는데 왜 테스트가 실패하지? 했다. IDE에서 처음 푼 방법은 public static String solution(String[] seoul) { int i = 0; int answer = 0; for(String kim : seoul){ if(kim == "Kim"){ answer = i; } i++; } return "김서방은 " + answer + "에 있다"; } 이랬는데 잘 되길래 될줄알았다. answer은 int형이라그런가? 싶어서 Integer.toString(answer) 해서 String형으로 바꿨는데도 자꾸 answer가 0으로 들어갔다. 그래서 뭐가 문제지하면서 수정해보면서 발견했다. 바로 if문에서 == 으로 해서 안됬던거였다... 2024. 1. 12.
음양 더하기 쉽다. sings의 인덱스 위치에 false면 음수로, true면 양수로해서 다 더하믄 된다. ㅇ 풀이 class Solution { public int solution(int[] absolutes, boolean[] signs) { int sum = 0; for(int i = 0; i < absolutes.length; i++){ if(signs[i] == false){ sum += absolutes[i] * -1; }else{ sum += absolutes[i]; } } return sum; } } 끝~ 2024. 1. 12.
콜라츠 추측 단순하게 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.