SELECT NAME, DATETIME FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O I.ANIMAL_ID = O.ANIMAL_ID WHERE MAX(DATETIME, 3);
1) WHERE 절 내 잘못된 함수 사용
상위 N개 행을 조회할 때는 ORDER BY와 LIMIT 절을 사용
2) 입양을 못간 동물 조건 누락
입양 못간 동물 찾으려면 LEFT JOIN 후 ANIMAL_OUTS 테이블의 key값이 없는 경우를 조건으로 지정해야함(ANIMAL_OUTS.ANIMAL_ID IS NULL)
3) 정렬 조건 미적용
보호 시작일이 오래된 순으로 정렬하려면 ORDER BY I.DATETIME ASC가 필요함
SELECT I.NAME, I.DATETIME FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID WHERE O.ANIMAL_ID IS NULL ORDER BY I.DATETIME LIMIT 3;
1) 공백 유지 : 공백은 변환없이 바로 answer에 추가
2) 알파벳 순환 처리 : (c-'a' + n) % 26을 사용하면 'z' 다음 다시 'a'로 원활하게 넘어감
3) StringBuilder 사용 : 문자열 연결 연산(+) 대신 StringBuilder를 사용하여 성능을 최적화
class Solution {
public String solution(String s, int n) {
StringBuilder answer = new StringBuilder();
for(char c : s.toCharArray()) {
if(Character.isLowerCase(c)) {
c = (char) ('a'+ (c-'a' + n) %26);
} else if(Character.isUpperCase(c)) {
c = (char) ('A' + (c-'A' +n) %26);
}
answer.append(c);
}
return answer.toString();
}
}
class Solution {
public int solution(int a, int b, int n) {
int totalColas = 0;
while(n >=a) {
int newColas = (n/a) *b;
int remainder = n % a;
total += newColas;
n = newColas + remainder;
}
return totalColas;
}
}