코트카타
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
- 0 ~ 65535 할당 가능
- 이미 사용되고 있는 포트 (0 ~ 1023)
=> 즉 1000 넘는 포트부터 사용해야 한다.
HTTP Message 구조
HTTP 상태 코드
각 100번대 의미만 알면 된다.
- 1xx (정보)
- 요청 수신 후 처리중인 상태
- 잘 사용하지 않는다.
- 2xx (성공)
- 정상 처리 완료된 상태
- 3xx (리다이렉션)
- 요청을 완료하려면 추가 행동이 필요한 상태
- 3xx 응답 + Location HTTP Header가 있으면 Location 위치로 리다이렉트 한다.
- 4xx (클라이언트 에러)
- 클라이언트측 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
- 클라이언트의 요청이 잘못되었기 때문에, 같은 요청의 재시도는 실패한다.
- 5xx (서버 에러)
- 서버 오류, 요청은 정상이지만 서버가 처리하지 못함
- 재시도하면 성공할 수 있다.
Restful API는 최소 level2 이상을 지켜야 한다.
이것만은 꼭 기억하기
- 네트워크 통신은 HTTP로 이루어진다.
- HTTP는 무상태 프로토콜이며 비연결성 특징을 가지고 있다.
- HTTP Message 구조
- HTTP Method
- 상태코드
- HTTP Header
- HTTP API는 Restful 하게 설계해야 한다. 최소 성숙도레벨 2를 지켜야 한다.
- Servlet은 Java에서 Request, Response를 쉽게 다루게 해주는 객체이다.
- Servlet Container는 Servlet 객체를 싱글톤으로 관리한다.
- WAS는 다중 요청 처리를 위해 Multi Thread를 지원한다.
- SSR 방식은 서버에서 동적인 페이지를 완성하여 응답한것을 브라우저에서 화면을 출력한다.
- CSR은 HTTP API 통신으로 얻은 결과를 통해 브라우저에서 동적으로 화면을 출력한다.
2주차
- Spring Framework로 만드는 Web Application
- Web Application 이라는 라면을 끓인다(만든다).
- 라면 : Java
- 냄비 : Spring
- Web Application 이라는 라면을 끓인다(만든다).
3주차
- DispatcherServlet
- 클라이언트 HTTP Request를 알맞게 파싱하고 클라이언트에게 알맞은 응답을 반환
- 핸들러 목록 정보를 알고있다.
- 핸들러 어댑터 목록 정보를 알고있다.
- HandlerAdapter
- 자신이 처리할 수 있는 Handler인지 확인할 수 있는 기능(Method)이 필요하다.
- 프론트 컨트롤러에서 요청을 위임받았을 때 핸들러에게 요청을 지시하는 기능이 필요하다.
- return 시 Handler로부터 전달받은 결과를 알맞은 응답으로 변환한다.
- Handler
- 요청에 대한 로직을 수행하는 기능이 필요하다.
@RestController = @Controller + @ResponseBody
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
30_내적_키오스크 과제 피드백_Spring 입문 6주차_일정관리 과제 Lv 0,1 구현중_25.1.23(목) (1) | 2025.01.23 |
---|---|
29_수박수박수박수박수박수?_스탠다드 Spring 3 Layered, Spring MVC_Spring 입문 4,5주차_25.1.22(수) (0) | 2025.01.22 |
27_제일 작은 수 제거하기_키오스크 과제 해설_스탠다드 백엔드 개발자 필수 지식_25.1.20(월) (0) | 2025.01.20 |
26_없는 숫자 더하기_키오스크 과제 6-1, 2 구현 Enum, 람다&스트림_25.1.17(금) (0) | 2025.01.17 |
키오스크 개인과제 관련 트러블슈팅 TIL 모음 (0) | 2025.01.17 |