전체 글
-
[프로그래머스] 문자열 뒤집기알고리즘 노트 2023. 10. 19. 09:37
my_string에서 s부터 e까지의 문자열을 추출해 순서를 뒤집은 후 다시 원본 문자열과 합쳐주면 됩니다. 과거 문자열 뒤집기를 사용해봤기에, 그에 맞게 다시 구현을 해보았습니다. [문제풀이] 1. my_string을 char배열로 변경합니다. 2. while문을 통해 s가 e보다 작거나 같을 때 까지 수행을 반복합니다. 3. 임시 값인 temp 변수를 만들어 놓고, chars[s]를 넣고 chars[e]와 교체작업을 하는데 사용해줍니다. 4. s는 1씩 늘리고, e는 1씩 감소시킵니다. 5. 순서가 바뀐 문자 배열을 new String으로 문자열 오브젝트로 변환해 return합니다. 근데 이것보다 훨씬 더 간편한 문자열 뒤집기 방법이 있었으니..그것은 바로 StringBuilder의 reverse()..
-
@RequiredArgsConstructor 가 하는 일스터디 노트 2023. 10. 18. 16:55
Lombok 라이브러리는 정말 강력하지요. Lombok을 통해 우리는 반복적으로 작성하는 보일러코드들에게서 자유로워질 수 있었습니다. 최근에 Lombok의 @RequiredArgsConstructor에 대해 스터디 할 일이 생겼었습니다. 대체 얘는 왜 어떻게 코드를 이처럼 간편하게 만들어 줄 수 있는걸까요? 해당 애노테이션의 설명글을 참고해보면 이 애노테이션이 하는 일을 알 수 있습니다. 1. 필수 인수를 사용해 생성자를 생성합니다. 2. 여기서 말하는 필수 인수는 @NonNull과 같은 제약조건 또는 final field를 말합니다. 이처럼 해당 애노테이션을 사용하면 불필요하게 생성자를 만들어 줄 필요가 없으며, 이를 통해 Component들에선 보다 간편하게 주입방식을 구현할 수 있게 됩니다. @Re..
-
스프링 빈 스코프에 대하여스터디 노트 2023. 10. 18. 16:19
빈 스코프에 대하여 정리를 해보겠습니다. 일반적으로 Java에서 객체는 개발자가 new 키워드로 생성한 하나의 객체를 말하며, 이 객체에 유효한 레퍼런스가 없어지면 그 객체는 가비지 컬렉터에 의해 소멸되게 됩니다. 즉, 하나의 객체가 new를 통해 인스턴스가 생성되고 사용되고 레퍼런스가 없어저 GC에 의해 제거되기까지를 객체의 생명주기라고 말합니다. 그럼 스프링을 활용하면 객체 생명 주기는 어떻게 변할까요? 우선 스프링의 경우 ApplicationContext를 활용해 빈 객체를 생성하고 소멸시키게 됩니다. 이때 스프링에 의해 빈 객체를 생성하는 시점부터 객체 소멸의 시간까지를 그 객체의 생명주기, 즉 스프링의 빈 스코프라고 합니다. 스코프 설정에 따라 스프링 빈이 생성되는 시점과 소멸되는 시점이 결정되..
-
@RestControllerAdvice에 대하여스터디 노트 2023. 10. 18. 14:04
Spring Boot를 사용하면 기본적으로 에러를 처리하는 BasicErrorController라는 녀석이 있습니다. 이 컨트롤러는 Spring Boot를 사용하던 중 error가 발생할 경우 produces Type이 text/html일 경우 errorHtml이 호출됩니다. 여기서 RequestMapping의 produces는 contentType을 나타내는 속성입니다. 기본적으로 Spring Boot를 활용하면 별도의 에러 페이지 설정 없이도 error ModelAndView를 활용할 수 있습니다. 다만 우리가 직접 예외를 핸들링하고 싶을땐, Controller를 만들어 errorHtml() 메소드와 error()메소드를 직접 재정의하여 사용하면 됩니다. 하지만 url이 외부에 노출되기 때문에 에러 ..
-
[프로그래머스] 접미사인지 확인하기알고리즘 노트 2023. 10. 18. 10:49
my_string의 마지막 문자열이 is_suffix의 문자열과 동일하다면 1을, 동일하지 않다면 0을 반환하는 문제입니다. 곧 is_suffix의 길이만큼의 문자열을 my_string에서 구한 뒤 두 값을 비교하면 되겠지요? [문제풀이] 1. 우선 my_string과 is_suffix의 길이가 다르다면 애당초 조건이 성립이 되지 않기에 0을 반환합니다. 2. my_string의 is_suffix만큼의 길이를 빼면 my_string과 is_suffix는 같은 길이의 문자열이 됩니다. 그럼 이 둘이 같은지를 비교해서 같다면 1을, 다르다면 0을 반환해주면 됩니다. 다 풀었다고 생각하고 정답을 제출했습니다만, 훨씬 더 짧은 문제 풀이가 있어 공유합니다. [문제풀이] 1. String 클래스의 endsWith..
-
[프로그래머스] 접미사 배열알고리즘 노트 2023. 10. 18. 10:38
지문의 이해가 오히려 더 어려웠던 것 같습니다.. 위 내용은 결국 문자열을 하나씩 잘라 알파벳 순서대로 정렬을 해서 반환하면 되는 문제였습니다. [문제풀이] 1. IntStream의 range() 메소드로 loop문을 구현합니다. 길이는 my_string의 length()까지 입니다. 2. mapToObj() 메소드를 통해 잘라낸 String을 구합니다. 여기서 ::는 substring의 인자를 하나만 받는 메소드가 하나밖에 없을 경우 사용 가능합니다. 따라서 ::substring을 활용하면 .substring(i)로 치환되어 사용됩니다. 3. sorted() 메소드를 통해 잘라낸 문자열을 알파벳 순서로 정렬합니다. 4. toArray() 메소드를 통해 String 배열을 반환합니다. 여기서는 새로운 S..