Pccp 준비하기 - 8 정렬문제와 SQL문제 풀이

박경현·2024년 2월 22일
0

이제 알고리즘 문제를 풀때 1문제씩 SQL도 풀어보려고 한다
이것도 꾸준히 풀어야 나중에 쿼리문 작성이 필요한 순간에 버벅거리지 않을 수 있으니까 말이다

알고리즘 문제 - 인사고과

인사고과 문제 링크

문제풀이

만약 나보다 근무태도랑 동료평가가 둘 다 높은 사람이 한명이라도 있으면 -1을 입력,
아니면 두 점수의 합을 보고 체크해주기!

이때 이 문제에서 다른 사원들도 근태랑 동료평가 점수가 둘 다 높은지 체크해줘야했던 문제다!

저의 경우 나보다 높은 근무태도랑 동료평가 점수가 있는 사람이 있는지 체크하는 함수를 따로 만들어서 검사하게 만들었다 -> 매번 검사하다보니 시간이 오래걸림..;;

풀이 코드

class Solution {
    public int solution(int[][] scores) {
        int[] myScore = scores[0];
        int myAttitudeScore = myScore[0];
        int myEvaluationScore = myScore[1];
        int mySum = myAttitudeScore + myEvaluationScore;
        int answer = 1;

        for (int[] score : scores) {
            int attitudeScore = score[0];
            int evaluationScore = score[1];
            int sum = attitudeScore + evaluationScore;

            if (attitudeScore > myAttitudeScore && evaluationScore > myEvaluationScore) {
                return -1;
            }
            if (sum > mySum) {
                if (!isNoIncentive(score, scores)) answer++;
            }
        }
        return answer;
    }

    private boolean isNoIncentive(int[] score, int[][] scores) {
        for (int[] ints : scores) {
            if (ints[0] > score[0] && ints[1] > score[1]) {
                return true;
            }
        }
        return false;
    }
}

SQL문제 - 조건에 부합하는 중고거래 댓글 조회하기

SQL문제링크

문제 풀이

이 문제는 날짜를 date_format을 어떻게 하는지가 핵심인 문제였다!

  1. Table이 두개이기 때문에 join을 사용해서 두 테이블을 연결시켰고,
  2. 조건에 맞게 2022년 10월을 BETWEEN을 사용해서 찾았다
  3. 그리고 ORDER BY에 정렬을 날짜와 제목 각 오름차순으로 정렬했다

풀이 코드

SELECT UGB.TITLE, UGB.BOARD_ID, UGR.REPLY_ID, UGR.WRITER_ID, UGR.CONTENTS, date_format(UGR.CREATED_DATE, '%Y-%m-%d')
FROM USED_GOODS_BOARD AS UGB
JOIN USED_GOODS_REPLY AS UGR
ON UGB.BOARD_ID = UGR.BOARD_ID
WHERE UGB.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY UGR.CREATED_DATE, UGB.TITLE;

피드백

저 알고리즘 문제는 정렬을 해서 푸는 문제였던거 같은데 나는 정렬을 하지 않고 풀어보긴했다
하지만 시간이 정렬한 방법보다 훨씬 오래 걸렸기 때문에 정렬을 어떻게 적용시켰는지 이해하는게 필요해보이는 문제다

SQL문제의 경우는 join과 날짜 포맷을 이번에 좀 더 확실히 깨닫고 가자

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글