[프로그래머스]

박경희·2024년 1월 1일

코딩테스트

목록 보기
15/69

문제1

class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > height) {
                answer++;
            }
        }
        return answer;
    }
}
  • for를 사용한다면 array[i] 형식으로 사용
class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        for(int i : array) {
            if(i > height) answer++;
        }
        return answer;
    }
}

foreach를 사용하면 i 그대로 사용하여 비교


문제2 - 피자 나눠먹기

public int solution(int n) {
        int answer = 0;
        if (n >= 1 && n <= 7) {
            answer++;
        }
        if (n > 7) {
            answer = n / 7 + 1;
            if (n % 7 == 0) {
                answer--;
            }
        }
        return answer;
    }
// 피자의 최소 주문 수를 계산
    int answer = n / 7; // n을 7로 나눈 몫을 계산
    
    // n이 7로 나누어 떨어지지 않으면, 즉, 남는 사람이 있으면 한 판을 더 주문
    if (n % 7 > 0) {
        answer++;
    }
    
    return answer;

문제3 - MySQL(INNER JOIN / LEFT JOIN)

select a.name, a.datetime
from ANIMAL_INS a 
left join animal_outs ao 
on a.ANIMAL_ID = ao.ANIMAL_ID
where ao.animal_id is null
order by a.datetime limit 3
  • LEFT JOIN 은 왼쪽 테이블(ANIMAL_INS)의 모든 행을 반환하고, 오른쪽 테이블(ANIMAL_OUTS)과 일치하는 행이 있으면 해당 정보를 함께 반환한다.
  • 오른쪽 테이블에 일치하는 행이 없는 경우에는 해당 부분이 NULL로 채워져 반환된다.

"아직 입양을 못 간 동물"의 정보를 찾기 위해서는
ANIMAL_INS에는 있지만 ANIMAL_OUTS에는 없는 동물, 즉 아직 입양되지 않은 동물의 정보를 찾아야 하므로 LEFT JOIN을 사용해야 한다.

WHERE ao.animal_id is null 조건은 ANIMAL_OUTS에 해당 ANIMAL_ID가 없는 경우, 즉 입양되지 않은 동물을 필터링하는 데 사용된다.

INNER JOIN을 사용하면 입양된 동물의 정보만 반환될 것이므로, 입양되지 않은 동물의 정보를 찾을 수 없다.

0개의 댓글