오류 메시지: org.springframework.dao.InvalidDataAccessApiUsageException: For input string: "XXX"; nested exception is java.lang.NumberFormatException: For input string: "XXX"
상황: jpa repository를 통한 조회를 시도하고 있었고, entity 안에서 Enum 클래스를 사용하고 있던 상황에 발생한 오류
public int solution(int[] A) {
int len = A.length;
if (len < 3) {
return 0;
}
Arrays.sort(A);
for (int i = 0; i < len - 2; i++) {
int P = A[i], Q = A[i + 1], R = A[i + 2];
if (Q > R - P) {
return 1;
}
}
return 0;
}
이 문제도 너무 쉬운 문제였는데 코딩 테스트 감이 떨어져서 아주 빙글빙글 돌다가 겨우 실마리를 찾아서 푼 케이스다.
일단 sorting이 필요하다.
정렬된 상태에서 오름차순으로 곱하면 된다.
2번 케이스만 고려할 경우 음수, 0일 때는 잘못된 결과를 리턴할 수 있어 정렬된 상태에서 첫번째, 두번째, 마지막 배열의 수를 곱한다.
2,3의 값을 비교해서 큰 값을 리턴
public static int solution(int[] A) {
Arrays.sort(A);
int len = A.length;
// 정렬한 후 max 3개의 값과
int firstMultipleSum = A[len-1] * A[len-2] * A[len-3];
// 음수인 경우를 고려하여 1,2,마지막 곱 비교
int secondMultipleSum = A[0] * A[1] * A[len-1];
if (firstMultipleSum > secondMultipleSum) {
return firstMultipleSum;
} else {
return secondMultipleSum;
}
// 다른 사람 소스를 보니 Math.max, min을 사용하기도 함.
}
문제를 잘게 쪼개서 보는 연습부터해야 divide and conquer 전략
문제를 있는 그대로 읽을 것 한 번 비틀어서 생각하지 말것(의외로 답은 쉽다.)
1,2번으로 생각한 다음 제약 사항 및 주어진 조건에 대해 고려하여 2번째 케이스를 생각해낸다.
이번 문제는 직관적으로 이해는 쉬웠으나 시간 복잡도가 중요한 문제였고 역시나 coner case를 조심해야하는 문제다.
prefix Sum(부분합) 문제
이중 for문 절대로 안됨
단건의 for문도 전체 index를 돌면 시간 복잡도 실패
corner case 확인 잘할 것
public int solution(int A, int B, int K) {
int startIdx = 0;
int result = 0;
for (int i = A; i <= B; i++) {
if (i % K == 0) {
startIdx = i;
result++;
break;
}
}
result += (B - startIdx) / K;
if(B == A && B % K != 0) {
return 0;
}
return result;
}
File - Project Structure - Project Settings-Project에서 Language level : 사용하고자 하는 자바버전으로 변경
File - Project Structure - Project Settings-Modules에서 모듈 추가 후 Language level : 사용하고자 하는 자바 버전으로 변경
위와 같이 변경했는데도 안 되면 Settings-Build, Execution~ - Java Compiler에서 module추가 후 Target bytecodeVersion을 사용하고자 하는 버전으로 변경하면 된다.
maven 프로젝트를 gradle로 전환하면서 마주친 오류는 main, test의 java폴더를 소스 루트로 인식하지 못하는 오류가 있었다. Cannot find or load main class 오류 발생. 그래서 대상이 되는 java 패키지 폴더를 우클릭하고 Source Root로 변환해주는 작업을 했다.
yaml파일을 통한 @value값 설정 시 static일 경우 값 설정이 정상적으로 되지 않는 오류 발생. null값으로 세팅됨. - 값이 할당되는 시점 차이로 보여 해당 현상 파악할 예정
또한 기존의 프로젝트 파일을 그대로 가져다 쓰면서 Cloud not resolve type alias '패키지명.클래스명'의 오류가 발생하여
yaml 설정 파일 중 아래의 type-aliases-package 경로를 현재 프로젝트의 경로로 변경