전체 글
-
[프로그래머스] 2의 영역알고리즘 노트 2023. 10. 23. 11:36
주어진 배열에서 제일 처음 나오는 2와 가장 마지막에 나오는 2의 중간 배열 값을 구하면 되는 문제입니다. 추가적으로 2가 없다면 -1을 리턴하라고 하네요. [문제풀이] 1. IntStream의 range함수를 통해 배열의 요소값이 2인 index를 구합니다. 2. 구해진 index배열의 길이가 0이라면 -1을 바로 반환합니다. 3. 그렇지 않다면 IntStream의 rangeClosed함수로 index의 첫번째 값부터 index의 마지막 값까지를 arr의 인덱스 값으로 활용하여 int형 배열을 반환합니다.
-
[프로그래머스] 배열 만들기 3알고리즘 노트 2023. 10. 23. 10:35
배열 하나를 가지고 두 가지 조건에 맞추어 새로운 배열을 만들어내면 되는 문제입니다. 결국 두 조건으로 두 개의 배열을 만들고 합쳐주면 됩니다. [문제풀이] 1. Arrays.copyOfRange 함수를 이용해 배열 1, 배열 2를 만들어줍니다. 2. 배열1과 2를 합치기 위해 Stream.of()함수를 가지고 스트림으로 만들어 줍니다. 3. flatMapToInt()를 통해 IntStream으로 변경한 이후 toArray를 이용해 배열로 반환해줍니다. 여기에서 해당 코드의 문제점은 Stream 클래스를 선언적으로 이용했다는 점입니다. 다음과 같이 수정이 가능할 것 같습니다. 풀리는 방식은 동일합니다. 다만 Stream.of()를 통해 두 배열을 하나의 스트림으로 만들 것이 아니라, intervals배열..
-
HTTP Status Code스터디 노트 2023. 10. 20. 15:17
HTTP 프로토콜을 사용하다 보면 응답 메시지를 활용하게 되는데, 거기에는 HTTP 프로토콜의 버전과 상태 코드등이 포함되어 있습니다. 여기서 HTTP Status Code는 해당 Request에 대한 Response의 상태값을 말합니다. 즉, 클라이언트는 이 상태코드에 따라 적절한 응답 메시지 내용을 처리할 수 있게 됩니다. 일반적으로 HTTP Status Code는 다섯 가지로 구분을 하며, 해당 숫자의 첫 번째 자리는 대분류를 나타내고 그 다음 두 번째와 세 번째는 상세 분류 코드입니다. 다음은 대분류 다섯 가지에 대한 설명입니다. 📌 1xx 임시 응답을 의미합니다. 요청은 성공적으로 받았으나 서버에서 계속 작업이 진행중인 것을 말합니다. 이럴 경우에는 메시지 바디 없이 상태 라인과 헤더로만 구성되..
-
스프링 빈, 자바 빈, DTO, VO의 차이점과 불변객체(Immutable Object)스터디 노트 2023. 10. 20. 13:19
1. 스프링 빈 스프링 빈은 객체와 이름, 클래스 타임 정보가 스프링 컨테이네로 관리되는 객체를 말합니다. 2. 자바 빈 기본 생성자가 선언되어야 하고, Getter/Setter 팬으로 클래스 내부 속성에 접근이 가능해야 하며 java.io.Serializable을 구현하고 있어야 합니다. 참고로 스프링 빈과 자바 빈은 혼동이 생길 수 있는데 자바 빈은 스프링 빈이 될 수 있어도, 그 반대는 불가능합니다. 3. DTO(Data Transfer Object) 소프트웨어 사이에 데이터를 전달하는 객체를 의미합니다. 특히 내부에 비즈니스 로직이 없는 것을 권장하며 Getter 메소드 정도는 허용할 수 있습니다. 4. VO(Value Object) 특정 데이터를 추상화해 데이터 표현을 하는 객체를 의미하며 eq..
-
[프로그래머스] 카운트 다운알고리즘 노트 2023. 10. 20. 12:15
start_num부터 end_num까지 1씩 줄이며 result배열을 만들어주면 됩니다. [문제풀이] 1. IntStream의 rangeClosed()메소드를 통해 loop문을 생성합니다. 여기서 range는 마지막 값을 비포함, rangeClosed는 마지막값을 포함한다고 기억하심 편합니다. 2. boxed()를 통해 Integer형으로 변형한 뒤 Collections의 reverseOrder() 메소드로 collection을 역배열시켜줍니다. 3. 그리고 mapToInt로 int형으로 바꾼 뒤 toArray()로 배열을 리턴시켜줍니다.
-
[프로그래머스] 글자 지우기알고리즘 노트 2023. 10. 20. 11:30
my_string의 요소들 중 indices 내 요소의 자리에 위치한 글자를 지우면 되는 문제입니다. 우선 String을 String 배열로 만들고 공백으로 치환하면 쉽게 풀 수 있습니다. toCharArray()로 치환하면 char형을 사용할 수 없어 풀기 힘들어집니다. [문제풀이] 1. my_string의 split()을 활용해 String배열을 만들어줍니다. 2. indices의 요소의 값으로 split한 배열의 위치의 글자를 ""으로 지워줍니다. 3. String.join()을 통해 하나의 문자열로 합쳐서 반환해줍니다.
-
Transaction이 뭐길래?스터디 노트 2023. 10. 19. 13:25
개발을 하다보면 늘 듣는 말이 있습니다. '트랜잭션 관리를 잘 해야 해!' 대체 트랜잭션이 무엇이길래 우리는 트랜잭션 관리를 해야만 하는 걸까요? 📌 트랜잭션(Transaction)이 대체 뭐길래? 그럼 트랜잭션이라는게 대체 뭘까요? 트랜잭션의 사전적 의미는 '데이터베이스의 상태를 변화시키기 위한 수행 작업의 단위, 즉 더 이상 쪼갤 수 없는 최소 작업 단위를 말한다'입니다. 그래서 트랜잭션의 최종 단계는 'commit'또는 'rollback' 중 하나가 되어야 합니다. 만약 비즈니스 처리가 모두 성공한다면? 트랜잭션의 결과는 'commit'의 성공이 되어야 합니다. 만약 비즈니스 처리가 중간에 실패한다면? 트랜잭션의 결과는 'rollback'으로 실패되어야 합니다. 즉, 비즈니스 로직이 실행 중 어떠한..
-
[프로그래머스] 세로 읽기알고리즘 노트 2023. 10. 19. 10:06
주어진 my_string 문자열을 m개의 문자로 묶음을 지어서 그 중 c번째의 글짜를 추출하면 result값이 나오게 됩니다. [문제풀이] 1. IntStream 클래스의 range() 함수로 loop를 구현합니다. 2. filter() 함수를 통해 m의 배수 자리를 구합니다. 3. 그렇게 구해진 l 값을 활용해 my_string의 문자열을 잘라내고, charAt을 활용해 잘란 문자열에서 원하는 문자를 가져옵니다. 4. map() 함수를 통해 char형을 String으로 바꾼 후 Collectors.joning()을 통해 문자열로 반환을 합니다.