CODING/스파르타 내일배움캠프 TIL

28_가운데 글자 가져오기_Spring 입문_25.1.21(화)

codingTrip 2025. 1. 21. 22:27

코트카타

30) 가운데 글자 가져오기

나의 풀이

class Solution {
    public String solution(String s) {
        String answer = "";
        int length = s.length();
        if (length % 2 == 0) {
            answer += s.charAt(length / 2 - 1);
            answer += s.charAt(length / 2);
            return answer;
        }
        answer = String.valueOf(s.charAt((int)Math.floor(length / 2)));
        return answer;
    }
}

Q1) 위치를 구하는 방법

전체 길이 / 2를 구하고

길이가 홀수인 경우 버림(0부터 시작하므로)

짝수인 경우 전체 길이 / 2-1과 전체 길이 / 2

 

Q2) 구한 위치의 해당하는 String 반환방법

length() : 길이 반환

indexOf : 특정 문자 위치 찾기

charAt : 해당 인덱스의 문자 반환

valueOf : String으로 변환

 

처음에는 indexOf도 같이 사용했더니 

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

위와 같은 예외가 발생했다.

indexOf()특정 문자문자열앞에서부터 처음 발견되는 인덱스를 반환하며

만약 찾지 못했을 경우 "-1"을 반환한다.

출처: https://mine-it-record.tistory.com/124 

 

따라서 제대로 알지도 못하고 사용하다보니 -1를 반환하고 이로 인해 예외처리가 발생했다.

 

다른 분들의 풀이

class StringExercise{
    String getMiddle(String word){
	return word.substring((word.length()-1)/2, word.length()/2 + 1);
  }

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12903/solution_groups?language=java

한 줄로 끝내시는 모습이 본받고 싶었다.

substring을 사용하셨다.

 

어제 스탠다드반 튜터님께서 구현 전에 설계하는 습관을 들이라고 하셨는데

그래서 오늘을 먼저 코드 작성보다는 노트에 정리하고자 노력했다.

앞으로도 이런 습관을 들일 것이다.


Spring 입문

1주차

자주 사용되는 PORT

  1. 0 ~ 65535 할당 가능
  2. 이미 사용되고 있는 포트 (0 ~ 1023)

=> 즉 1000 넘는 포트부터 사용해야 한다.

 

HTTP Message 구조

출처 : 스파르타 내일배움캠프 Spring 입문 강의자료

HTTP 상태 코드

각 100번대 의미만 알면 된다.

  • 1xx (정보)
    • 요청 수신 후 처리중인 상태
    • 잘 사용하지 않는다.
  • 2xx (성공)
    • 정상 처리 완료된 상태
  • 3xx (리다이렉션)
    • 요청을 완료하려면 추가 행동이 필요한 상태
    • 3xx 응답 + Location HTTP Header가 있으면 Location 위치로 리다이렉트 한다.
  • 4xx (클라이언트 에러)
    • 클라이언트측 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
    • 클라이언트의 요청이 잘못되었기 때문에, 같은 요청의 재시도는 실패한다.
  • 5xx (서버 에러)
    • 서버 오류, 요청은 정상이지만 서버가 처리하지 못함
    • 재시도하면 성공할 수 있다.
    ex) 서버가 일정시간 다운되었다가 다시 살아난 경우

Restful API는 최소 level2 이상을 지켜야 한다.

 

이것만은 꼭 기억하기

  1. 네트워크 통신은 HTTP로 이루어진다.
  2. HTTP는 무상태 프로토콜이며 비연결성 특징을 가지고 있다.
  3. HTTP Message 구조
    1. HTTP Method
    2. 상태코드
    3. HTTP Header
  4. HTTP API는 Restful 하게 설계해야 한다. 최소 성숙도레벨 2를 지켜야 한다.
  5. Servlet은 Java에서 Request, Response를 쉽게 다루게 해주는 객체이다.
  6. Servlet Container는 Servlet 객체를 싱글톤으로 관리한다.
  7. WAS는 다중 요청 처리를 위해 Multi Thread를 지원한다.
  8. SSR 방식은 서버에서 동적인 페이지를 완성하여 응답한것을 브라우저에서 화면을 출력한다.
  9. CSR은 HTTP API 통신으로 얻은 결과를 통해 브라우저에서 동적으로 화면을 출력한다.

 

2주차

  • Spring Framework로 만드는 Web Application
    • Web Application 이라는 라면을 끓인다(만든다).
      • 라면 : Java
      • 냄비 : Spring

출처 : 스파르타 내일배움캠프 Spring 입문 강의자료

 

3주차

 

  • DispatcherServlet
    1. 클라이언트 HTTP Request를 알맞게 파싱하고 클라이언트에게 알맞은 응답을 반환
    2. 핸들러 목록 정보를 알고있다.
    3. 핸들러 어댑터 목록 정보를 알고있다.
  • HandlerAdapter
    1. 자신이 처리할 수 있는 Handler인지 확인할 수 있는 기능(Method)이 필요하다.
    2. 프론트 컨트롤러에서 요청을 위임받았을 때 핸들러에게 요청을 지시하는 기능이 필요하다.
    3. return 시 Handler로부터 전달받은 결과를 알맞은 응답으로 변환한다.
  • Handler
    1. 요청에 대한 로직을 수행하는 기능이 필요하다.

 

@RestController = @Controller + @ResponseBody