[TIL] 20231101

Xtraa·2023년 11월 1일
0

TIL

목록 보기
11/99

공부한 내용

1. 프로그래머스 코딩테스트 입문 Day4

피자 나눠 먹기 (2)

  • 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

최소공배수를 구하면 된다고 생각하고 접근해서, 피자는 여섯 조각으로 고정이니까 6의 배수에 사람의 수를 나눠서 몫이 0이면 된다라는 결론 도출

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; ;i++){
            if((6 * i) % n == 0){
                answer = i;
                break;
            }
        }
        return answer;       
    }
}

이렇게 했지만, 이러면 for문 보단 while로 루프 돌리는게 낫다고 생각해서 while로 바꿨는데

class Solution {
    public int solution(int n) {
        int answer = 0;
    
        while(true){
            int i = 0;
            i++;
            if((6 * i) % n == 0){
                answer = i;
                break;
            }
        }
        return answer;
    }
}

answer 값이 1인 경우를 제외하고 루프가 끝나지 않길래 조건에 문제가 있을거라 생각.
int i가 0으로 계속 초기화 되는게 문제라는걸 알았다...

class Solution {
    public int solution(int n) {
        int answer = 0;
        int i = 0;
    
        while(true){
            // int i = 0; 밖으로

수정!


피자 나눠 먹기 (3)

  • 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
class Solution {
    public int solution(int slice, int n) {
        int answer = n / slice;
        
        if(n % slice != 0){
            answer++;
        }
        
        return answer;
    }
}

이렇게 했는데 다른 사람의 풀이를 보니 삼항연산자를 사용하는 방법도 있었음.

class Solution {
    public int solution(int slice, int n) {
        int answer = n % slice > 0 ? n / slice + 1 : n / slice;
        return answer;
    }
}

배열의 평균값

  • 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        double num = 0;
        
        for(int i = 0; i < numbers.length; i++){
            num += numbers[i];
        }
        
        answer = num / numbers.length;
        
        return answer;
    }
}

2. 나도코딩의 자바 기본편

  • break, continue / 이해가 조금 부족했던 부분이 있었는데 완벽 이해
  • 배열, 다차원 배열 복습
  • 아스키 코드 (ANSI)
    • 알파벳 대문자'A'는 65 부터 시작, 소문자'a'는 97 부터 시작, 숫자는 '0'은 48부터 시작.

3. Spring

  • 테스트 코드

    • Spring에서는 '테스트 코드'작성을 잘 할 수 있는 환경 제공 > JUnit
      • 자바 프로그래밍 언어 용 단위 테스트 프레임워크
  • Lombok과 application.properies

    • Lombok - 메서드/생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리
  • Spring MVC

    • MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리합니다.
    • Model
      • 데이터와 비즈니스 로직을 담당합니다.
      • 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행합니다.
    • View
      • 사용자 인터페이스를 담당합니다.
      • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현합니다.
    • Controller
      • Model과 View 사이의 상호작용을 조정하고 제어합니다.
      • 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트 합니다.
    • Spring 공식 문서에서 Spring MVC에 대한 설명으로 ‘DispatcherServlet이 중앙에서 HTTP 요청을 처리해주는데 이는 Front Controller 패턴으로 설계되어있다’라고 설명하고 있습니다. 쉽게 표현해보자면 ‘Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있다’ 라고 이해하시면 좋습니다.
  • Controller 이해하기

    • Controller의 장점
    • @Controller
    • @GET, @POST, @PUT, @DELETE
    • @RequestMapping
  • 정적 페이지와 동적 페이지

  • 데이터를 Client에 반환하는 방법

    • Response 트렌드의 변화
    • JSON 데이터 반환하는 방법
    • @RestController
  • Jackson이란 무엇일까?

    • Jackson 라이브러리
    • Object To JSON
    • JSON To Object
  • Path Variable과 Request Param

    • Path Variable
    • Request Param
  • HTTP 데이터를 객체로 처리하는 방법

    • @ModelAttribute
    • @RequestBody

하루를 돌아보며, TMI

시간이 부족해

profile
https://xtraa.notion.site/Xtraa-ed48ac432d354d01b5bf5b0da5ec94a9?pvs=4

0개의 댓글