코테 준비 27일차_10/7

Jieun·2026년 10월 7일

코딩테스트 준비

목록 보기
21/24
  1. 오랜 기간 보호한 동물(1)
  • 초기 정답
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. 시저 암호
  • 핵심포인트

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();
    }
}
  1. 콜라 문제
  • 최종 정답
    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;
       }
    }
profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글