본문 바로가기

전체 글79

[백준]BOJ 10799 쇠막대기 문제 조건 어려웠던 점 문제를 풀면서 여는 괄호와 닫는 괄호가 인접한 레이저인 경우에는 stack의 size만큼 더해주는 것은 생각을 했었습니다. 그러나, 그다음에 대해 생각해주지 못했습니다. 문제 풀이 왼쪽 끝은 여는 괄호 ‘ ( ’는 스택에 넣어줍니다. 레이저인 경우에는 쇠막대기가 잘립니다. 즉, 오른쪽 닫는 괄호 ')'인 경우 스택의 Top을 pop하여 레이저인 경우에는 스택 사이즈만큼 더해주면 됩니다. 다음과 같이 레이저(빨갛게 칠해놓은 부분)를 만나는 경우 쇠막대기(노랗게 칠해놓은 부분)는 스택 사이즈만큼인 3개로 나뉘는 것을 확인할 수 있습니다. 닫힌 괄호가 레이저가 아닌 경우, 즉 쇠막대기인 경우 남은 잘린 부분을 더해주면 됩니다. 남은 잘린 부분은 +1 해주면 됩니다. 다음과 같이 쇠막대기.. 2023. 1. 19.
[JPA] JPA 개념 정리 JPA란? JPA는 개발자 대신 적절한 SQL을 생성하고 데이터베이스를 조작해서 객체를 자동 매핑하는 역할을 수행한다. JPA는 표준 인터페이스입니다. 구현체 중에는 Hibernate, EclipseLink, DataNucelus가 있습니다. 그중에 가장 보편적으로 사용되는 게 Hibernate입니다. JPA를 왜 사용할까?? 1. 유지보수 향상 기존에는 컬럼을 추가해야 하는 경우 쿼리도 수정하고, 자바 클래스도 이에 맞게 필드를 추가했습니다. JPA를 사용하면 필드만 추가하면 SQL은 JPA가 처리해 주기 때문에 유지보수 측면에서 좋습니다. => 그렇다면 JPA는 어떻게 값이 변경된 것을 알 수 있을까?? 1차 캐시를 사용하기 때문이다. 2. 패러다임의 불일치 해결 객체는 상속, 추상화, 다형성의 특징.. 2023. 1. 15.
[백준] BOJ 1541 잃어버린 괄호(자바) 오늘의 문제는 문자열을 파싱 하는 게 가장 중요한 포인트인 문제입니다. 문제 해결 방안 1. "-"를 기준으로 문자열을 파싱 하기 2. 각 분리된 문자 안에 있는 숫자를 전부 더해준 다음 뺄샘 해주기 다음과 같은 예시로 설명드리겠습니다. 10 - 50 + 30 + 20 - 10 + 100 이 문제에서 요구하는 최소를 구하기 위해서는 뺄샘을 기준으로 덧셈을 통해 큰 수를 먼저 만든 다음 뺄샘을 연산하면 최소를 구할 수 있습니다. 10 - (50 + 30 + 20) - (10 + 100) = 10 - 100 - 110 = -200 이렇게 뺄샘을 기준으로 덧셈 연산을 위해 저는 split 메서드를 사용하였습니다. split("\\-")을 기준으로 분리된 문자열은 다음과 같습니다. 10 50+30+20 10+1.. 2023. 1. 11.
[백준]BOJ 14719 빗물(자바) 백준 14719 빗물 문제는 구현, 시뮬레이션 문제입니다. 처음에 생각했을때 왼쪽->오른쪽, 오른쪽->왼쪽 이렇게 돌면서 왼쪽->오른쪽일때는 배열 0번 ~ W-1번 인덱스를 돌며 현재 블록 높이보다 큰 블록 높이를 찾아 이에 대한 차이를 계산하였고, 오른쪽->왼쪽 돌때도 배열 W-1 ~ 0번 인덱스를 돌며 현재 높이보다 큰 값을 찾아 차이를 계산해주었습니다. 이렇게 하니 문제 예시 테케 2개 정도는 맞았고, 1%에서 틀렸다라는 문구가 나왔습니다ㅠ 이후에 계속 생각해보았지만 도무지 모르겠어서, 결국 코드는 아니지만 어떤 로직으로 이루어졌는지 정답을 보았습니다ㅠ 로직 고인 빗물이 되기 위해서는 현재 인덱스를 기준으로 양쪽에 자신보다 큰 높이의 블록이 존재해야 합니다. 1. 현재 인덱스를 기준으로 왼쪽에 현재.. 2023. 1. 5.