- [ 기록/프로그래머스 ][프로그래머스 / 자바] 빈 배열에 추가, 삭제하기2023-11-22 09:45:57문제 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요. 풀이 import java.util.*; class Solution { public int[] solution(int[] arr, boolean[] flag) { int idx = 0; List array = new ArrayList(); for(boolean f : flag){ if(f) { for (int ..
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 공백으로 구분하기 22023-11-22 09:23:32문제 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. 풀이 class Solution { public String[] solution(String my_string) { return my_string.trim().split("\\s+"); } } trim() → 입력 문자열의 앞과 뒤에 있는 공백 제거 split("\\s+") → 하나 이상의 공백 기준으로 문자열 분리 정규식 사용하니까 쉬운 문제였다. 정규식 공부할 것
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 정사각형으로 만들기2023-11-22 09:08:36문제 이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 풀이 class Solution { public int[][] solution(int[][] arr) { int row = arr.length; int column= arr[0].length; int[][] answer = column >= row ? new int[column][column] : new int[row][row]; for(int i = 0; i < row; i++){ for(int j = 0;..
- [ 공부/Spring ][Spring] 스프링 DB 1편 6) 스프링과 문제 해결 - 예외 처리, 반복2023-11-21 09:42:06스프링 DB 1편 데이터 접근 핵심 원리 Session 6 스프링과 문제 해결 - 예외 처리, 반복 1. 체크 예외와 인터페이스 1) 체크 예외와 인터페이스 서비스 계층은 특정 구현 기술에 의존하지 않고 순수하게 유지하는게 좋음 예외에 대한 의존도 해결해야 함 리포지토리가 SQLException을 런타임 예외로 전환해 서비스 계층에 던지면 서비스 계층을 해당 예외를 무시할 수 있어 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 2) 인터페이스 도입 MemberService는 MemberRepository 인터페이스만 의존, 구현 기술을 변경하고 싶으면 DI를 사용해 MemberService 코드 변경 없이 구현 기술만 변경할 수 있다. 3) 체크 예외에 인터페이스 도..
- [ 참고/북마크 ]정규식 연습 사이트2023-11-20 21:35:55https://regexr.com/5mhou#native_link# RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 내가 작성한 정규식 설명, 결과도 확인할 수 있음 메뉴에서 정규식 관련 설명도 볼 수 있다
- [ 공부/Spring ][Spring] 스프링 DB 1편 5) 자바 예외 이해2023-11-20 09:05:50스프링 DB 1편 데이터 접근 핵심 원리 Session 5 자바 예외 이해 1. 예외 계층 1) 예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해 자바 기본 예외에 대한 이해 필요 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안 되는데,, 앞서 이야기한 Err..
- [ 공부/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(2)2023-11-19 09:40:22스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 7. 트랜잭션 문제 해결 - 트랜잭션 AOP 이해 1) 프록시 트랜잭션을 편리하게 처리하기 위해 트랜잭션 추상화를 도입하고 반복적인 트랜잭션 로직을 해결하기 위해 트랜잭션 템플릿을 도입했다. 하지만 서비스 계층에 순수한 비즈니스 로직 외에 트랜잭션 처리 로직이 섞여있다. 스프링 AOP를 통해 프록시를 도입해 해결할 수 있다. 트랜잭션 프록시가 트랜잭션 처리 로직을 모두 가져가고 트랜잭션을 시작한 후에 실제 서비스를 대신 호출, 서비스 계층에는 순수한 비즈니스 로직만 남길 수 있다. 프록시를 도입하기 전에는 서비스의 로직에서 직접 트랜잭션을 시작 프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 ..
- [ 공부/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(1)2023-11-18 09:25:04스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 1. 문제점들 1) 애플리케이션 구조 - 프레젠테이션 계층 UI 관련 처리 담당, 웹 요청과 응답, 사용자 요청을 검증 주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC - 서비스 계층 비즈니스 로직 담당 주 사용 기술 : 가급적 특정 기술에 의존하지 않고 순수 자바 코드로 작성 - 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술 : JDBC, JPA, File, Redis, Mongo 등 2) 순수한 서비스 계층 웹 관련 부분, 데이터 저장 기술을 다른 기술로 변경해도 비즈니스 로직은 최대한 변경 없이 유지되어야 한다. 서비스 계층은 특정 기술에 종속적이지 않게 개발해야함 계층을..