TIL(Today I Learned)_데일리루틴_24.11.26.Thu

728x90

데일리루틴 SQL

MySQL 없어진 기록 찾기 정답입니다.

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
LEFT JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID;

 

  • SELECT O.ANIMAL_ID, O.NAME
    • ANIMAL_OUTS 테이블에서 ANIMAL_ID와 NAME 컬럼을 선택합니다.
  • FROM ANIMAL_OUTS O
    • ANIMAL_OUTS 테이블을 O라는 별칭으로 사용하여 조회합니다.
  • LEFT JOIN ANIMAL_INS I
    • ANIMAL_OUTS와 ANIMAL_INS 테이블을 LEFT JOIN으로 결합하여, ANIMAL_OUTS의 모든 레코드와 ANIMAL_INS의 일치하는 레코드를 가져옵니다.
  • ON O.ANIMAL_ID = I.ANIMAL_ID
    • ANIMAL_OUTS와 ANIMAL_INS 테이블을 ANIMAL_ID 컬럼을 기준으로 결합합니다.
  • WHERE I.ANIMAL_ID IS NULL
    • JOIN 결과에서 ANIMAL_INS 테이블에 해당 레코드가 없는 경우(즉, 보호소에 들어온 기록이 없는 동물들)만 선택합니다.
  • ORDER BY O.ANIMAL_ID
    • 결과를 ANIMAL_ID 오름차순으로 정렬합니다.

 


데일리루틴 알고리즘

Java 푸드 파이터 대회 정답입니다.

class Solution {
    public String solution(int[] food) {
        StringBuilder answer = new StringBuilder();
        for(int i = 1; i < food.length; i++) {
            int repeat = food[i]/2;
            for (int j = 0; j < repeat; j++) {
                answer.append(i);
            }
        }
        answer.append(0);
        for(int i = food.length-1; i >= 1; i--) {
            int repeat = food[i]/2;
            for (int j = 0; j < repeat; j++) {
                answer.append(i);
            }
        }
        return answer.toString();
    }
}

 

  • StringBuilder answer = new StringBuilder();
    • 문자열을 효율적으로 생성하기 위해 StringBuilder 객체 answer를 생성합니다.
  • for(int i = 1; i < food.length; i++) {
    • food 배열의 두 번째 요소(i = 1)부터 시작하여 배열의 끝까지 반복하는 for 루프입니다.
  • int repeat = food[i]/2;
    • food[i]의 값을 2로 나누어 repeat 변수에 할당합니다. 이 값은 현재 인덱스 i를 몇 번 반복할지 나타냅니다.
  • for (int j = 0; j < repeat; j++) {
    • repeat 횟수만큼 내부 루프를 실행합니다.
  • answer.append(i);
    • 현재 인덱스 i를 answer에 repeat 횟수만큼 추가합니다.
  • answer.append(0);
    • 숫자 0을 answer에 추가합니다. 이 부분은 중간에 항상 0을 넣기 위함입니다.
  • for(int i = food.length-1; i >= 1; i--) {
    • 배열의 마지막 요소부터 두 번째 요소까지 반복하는 for 루프입니다. 역방향으로 진행합니다.
  • int repeat = food[i]/2;
    • food[i] 값을 2로 나눈 값을 repeat 변수에 저장합니다. 이 값은 현재 인덱스 i를 몇 번 반복할지 나타냅니다.
  • for (int j = 0; j < repeat; j++) {
    • repeat 횟수만큼 내부 루프를 실행합니다.
  • answer.append(i);
    • 현재 인덱스 i를 answer에 repeat 횟수만큼 추가합니다.
  • return answer.toString();
    • StringBuilder 객체 answer를 문자열로 변환하여 반환합니다.

 

728x90
반응형
LIST