240428

Regular Kim·2024년 4월 29일
0

회고

목록 보기
39/71

240428 회고 💬

이번 주에 늦은 연봉협상이 있었다. 게다가 운영 서버 반영 일정도 있었다. 너무 바쁜 한 주 였다. 그래도 할 건 해야지... 하루 늦은 회고를 써본다.

Keep 👍

  • 알고리즘 문제 풀이를 1주일 꽉 채워서 해냈다. 0428 기준으로 198일째 연속 풀이에 성공했다. 이번 주에는 사실 브론즈 문제를 주로 풀었다. 왜냐하면 요즘 의욕이 없기 때문이다. 연속풀이 해낸 기간이 아까워서 구색만 맞춘 셈이다.. 🤦‍♂️
    - D-Day 문제를 풀었다. LocaDate 라이브러리 사용 연습할 목적으로 풀기 좋다. 문제를 잘 읽어야 한다. 분기 처리가 까다로운데 글을 잘 읽으면 해결할 수 있다.
    - 파도반 수열 DP 문제도 하나 풀었다. 피보나치 수열 풀이하듯이 규칙을 찾기만 하면 쉽게 풀 수 있는 문제다. 규칙 찾기가 어렵다면 수열을 그림으로 직접 그려가면서 이해해야 한다. 현재 가장 큰 수는 직전 가장 큰 수와 접해있다. 좀더 파고 들어가면 금방 규칙을 찾을 수 있다.
  • 톰캣 공부를 하루 했다. 요즘 책 읽기가 힘들다. 이번 주에는 ServletConfig 기능을 테스트해 봤다. 톰캣을 다시 구동해야 하지만 ServletConfig 설정을 사용하면 자바를 다시 컴파일하지 않고도 여러 값을 사용할 수 있다.
  • 출퇴근 공부로 자바를 복습하고 있다. 이번 주에는 중첩 클래스와 내부 클래스를 복습했다. 내용이 어려워서 다시 공부할 예정이다.

Problem 🤢

  • 연협 후유증일까,,, 운영 반영으로 인한 피곤함일까... 요즘 의욕이 없다. 번아웃인가? 💀

Extras 😀

1. D-Day

import java.io.*;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Main {

    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

            Solution s = new Solution();
            System.out.println(s.solution(getInput(br), getInput(br)));

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static int[] getInput(BufferedReader br) throws IOException {
        String[] tokens = br.readLine().split(" ");
        int[] input = new int[3];
        input[0] = Integer.parseInt(tokens[0]);
        input[1] = Integer.parseInt(tokens[1]);
        input[2] = Integer.parseInt(tokens[2]);

        return input;
    }
}


class Solution {

    public String solution(int[] startDate, int[] endDate) {
        LocalDate today = LocalDate.of(startDate[0], startDate[1], startDate[2]);
        LocalDate targetDay = LocalDate.of(endDate[0], endDate[1], endDate[2]);

        return getAnswer(today, targetDay);
    }

    private String getAnswer(LocalDate today, LocalDate targetDay) {
        if(targetDay.isAfter(today.plusYears(1000)) || targetDay.isEqual(today.plusYears(1000))) return "gg";
        return "D-" + ChronoUnit.DAYS.between(today, targetDay);
    }
}

2. 파도반 수열

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

            Solution s = new Solution();
            System.out.println(s.solution(getInput(br)));

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static int[] getInput(BufferedReader br) throws IOException {
        int len = Integer.parseInt(br.readLine());
        int[] arr = new int[len];
        for (int i = 0; i < len; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        return arr;
    }
}

class Solution {

    public String solution(int[] arr) {
        List<Long> field = getField(arr);

        StringBuilder answer = new StringBuilder();
        for(int i : arr) answer.append(field.get(i)).append("\n");
        return answer.toString();
    }

    private List<Long> getField(int[] arr) {
        int limit = getMaxElem(arr);
        Long[] defaultValues = {0L, 1L, 1L, 1L, 2L, 2L, 3L, 4L, 5L, 7L, 9L};
        List<Long> lst = new ArrayList<>();
        for(long i : defaultValues) lst.add(i);

        for (int i = defaultValues.length - 1; i < limit + 1; i++) {
            lst.add(lst.get(i) + lst.get(i - 4));
        }
        return lst;
    }

    private int getMaxElem(int[] arr) {
        int max = 0;
        for (int i : arr) {
            max = Math.max(max, i);
        }
        return max;
    }
}
profile
What doesn't kill you, makes you stronger

0개의 댓글