'6월 17일' 마흔세 번째 기록 [TIL]

가은·2024년 6월 17일
0

I Learned [본 캠프]

목록 보기
71/135
post-thumbnail

👩‍🏫 오늘의 출석

❓마흔세 번째, 9 to 9을 해 본 소감❓

갑자기 알고리즘 문제들이 다시 풀고 싶어서 나 혼자 풀지 못했던 문제들을 전부 다시 풀어보는데 시간이 오래 걸리는데 그래도 재미있다. 짧고, 간단해서 모르는 부분을 봐도 금방 이해가 되고, 내가 어떤 부분을 잘못 작성했는지 이런 것들이 한눈에 보이니까 너무 좋다. 이런 간단한 코드들만 작성하고 싶다.ㅎㅎ Spring 너무,, 어려워...🥹😭🥹😭

📑오늘 학습한 내용

🧩오늘의 알고리즘 : 모의고사 🧩

문제 : 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...

2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...

3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한 조건

  • 시험은 최대 10,000 문제로 구성되어있습니다.
  • 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
  • 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        int[] first = {1,2,3,4,5}; // 5개씩 반복
        int[] second = {2,1,2,3,2,4,2,5}; // 8개씩 반복
        int[] third = {3,3,1,1,2,2,4,4,5,5}; // 10개씩 반복
        int[] score = {0,0,0}; // 각 수포자들의 점수
        
        // 수포자들의 점수 계산
        for(int i=0; i<answers.length; i++) {
            if(answers[i] == first[i%5]) score[0]++;
            if(answers[i] == second[i%8]) score[1]++;
            if(answers[i] == third[i%10]) score[2]++;
        }
        
        // 최대 점수 구하기
        int max = Math.max(score[0], Math.max(score[1], score[2]));
        
        // 최대 점수를 가진 수포자 리스트 생성
        List<Integer> answ = new ArrayList<Integer>();
        for(int i=0; i<score.length; i++) {
            if(max == score[i]) answ.add(i+1);
        }
        
        int[] answer = new int[answ.size()];
        for(int i=0; i<answ.size(); i++){
            answer[i] = answ.get(i);
        }

        return answer;
    }
}

🧩 오늘의 SQL : 조건에 부합하는 중고거래 상태 조회하기 🧩

문제 : USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE
    WHEN STATUS = "SALE" THEN "판매중"
    WHEN STATUS = "RESERVED" THEN "예약중"
    WHEN STATUS = "DONE" THEN "거래완료"
END AS STATUS
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE, '%Y-%m-%d') = '2022-10-05'
ORDER BY BOARD_ID DESC

WHERE DATE_FORMAT(CREATED_DATE, '%Y-%m-%d') = '2022-10-05'

오전에는 심화 주차 개인 과제 1차 제출을 하기 위해 마무리하고, 오후에는 갑자기 알고리즘 문제가 풀고 싶어서 그동안 풀었던 알고리즘 문제를 천천히 다시 풀어보았다. sql보다는 자바가 다시 풀어보라고 표시 해둔 것들이 더 많아서 계속 자바만 하다 보니 몇 문제 안 풀어본 것 같은데 시간이 금방 간다. 어디서 본 건데 코딩 테스트를 할 때 무작정 코드를 작성하는 것보다 먼저 구조를 생각하며 펜 같은 걸로 작성을 한 뒤에 코드를 작성하라고 해서 나도 연습을 하는 중인데 아직 그렇게 복잡하고, 긴 코드의 문제를 푸는 건 아님에도 불구하고 코드를 어떻게 풀어야 할지 생각하고, 코드를 어떤 식으로 작성할지 내 방식이 안 잡혀 있어서 풀 때마다 바뀌고 어떻게 해야 할지 몰라서 효율적이지 못하다 보니 이 부분에서도 시간이 많이 사용되고, 내 코딩 실력이 뛰어나지 못해 걸리는 시간도 적지 않아서 오늘 하루도 몇 문제 못 풀었는데 금방 간다. 내일은 심화 주차 해설 영상 보면서 다시 공부하며 시간을 보내야겠다.

0개의 댓글