
🚀접근하기 일단 첫째줄부터 차근차근 시작했다. 그림과 같이 dp[1]일 경우와, dp[2]일 경우를 일단 적어보았는데, dp[2]인 경우부터 max값을 사용해서 윗줄 중 더 큰 수를 선택해서 더해야 했다. 모든 경우를 다 max로 하면 indexError가 나기 때문에 어떻게 해야 할까 하다가 아예 경우를 3가지로 나눠야한다는 것을 깨달았다. dp[i][j]라고 한다면 먼저 1) j==0인 경우 2) j==(len(dp[i])) (그림에선 n이라고 표현함) 3)그 외의 경우 이렇게 3가지의 경우로 나누어주었다. 이런식으로 계속해서 윗줄부터 수를 더해준 후에, 마지막에 가장 마지막 줄 중에서 가장 큰 수를 출력해주면 된다. 🎉코드 N = int(input()) dp=[] for i in range(N): ..

💡AOP 💻AOP가 필요한 상황 public Long join(Member member) { //같은 이름이 있는 중복 회원X // Optional result = memberRepository.findByName(member.getName()); // result.ifPresent(m -> { // throw new IllegalStateException("이미 존재하는 회원입니다."); // }); long start = System.currentTimeMillis(); try{ validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); return member.getId(); } finally { long finish = S..

💡H2 데이터베이스 설치> https://www.h2database.com/html/download-archive.htmlArchive Downloadswww.h2database.com여기에 가서 1.4.200버전을 설치해준다. create a new database를 해준 다음, database를 생성해준다. 아이콘을 더블클릭하여, 맞게 적어준 후 연결을 누르면 데이터베이스가 연결된다.💻 H2 테이블 생성 및 실행member 테이블을 생성한다.drop table if exists member CASCADE; create table member ( id bigint generated by default as identity, name varchar(255), primary key (id) ); SELEC..

💡회원 웹 기능 - 홈 화면 추가💻 HomeControllerpackage hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } }http://localhost:8080/ 을 치고 들어가면 home 메서드를 호출하고, return "home";을 통해 home.html파일을 불러온다. 💻home.html Hello Spring 회원 기능 ..

💡컨포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비한다. MemberController가 MemberService를 통해 회원가입하고, 데이터 조회할 수 있어야 하는데, 이것을 MemberController가 MemberService를 의존하는 '의존관계'에 있다고 한다. 💻MemberController 생성 package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.C..

🚀접근하기이 문제는 처음 코드부터 작성하기 보단 혼자 메모장에 그림을 그려보면서 생각을 정리했던 것 같다. 괄호들을 보면서 스택을 써야겠다고 생각했고, "(" 이면 스택에 append하고 ")"이면 스택에서 pop하는 식으로 접근하였다. 🎉코드(시간초과)n=input() stack=[] num = 0 n_list=list(n) #이거 넘넘 중요하다 제발 for i in range(len(n_list)): if n_list[i]=="(": stack.append(n_list[i]) elif n_list[i]==")": if len(stack)!=0: stack.pop() if n_list[i-1] == "(": for i in range(len(stack)): num += 1 else: num += 1 p..

🚀접근하기 다이나믹 프로그래밍 문제를 풀 때마다 생각해야될 것이 점화식을 세우는 것과, dp배열을 따로 만들어 dp값들을 따로 저장해줄 수 있도록 배열을 하나 더 만드는 것이었는데, 이번 문제도 dp배열을 하나 더 만들어서 풀어주었다. 처음 배열엔 입력했던 수들을 넣어주고, dp 배열을 하나 더 만들어서 dp배열의 이전 것(dp[i-1]) 과 arr배열의 현재 것(arr[i])을 더한 값과, arr배열의 현재 값(arr[i]) 중 더 큰 값을 dp배열의 현재값에 넣어주고, 마지막엔 dp배열 중 가장 큰 max값을 고르면 이 값이 바로 구할 수 있는 합 중 가장 큰 합이 된다. ex) 예제 입력1 arr 10 -4 3 1 5 6 -35 12 21 -1 dp 10 6 9 10 15 21 -14 12 32 3..

n=input() list=[] for i in range(1, len(n)+1): #range함수는 끝 인덱스를 포함하지 않는 범위 반환 list.append(n[-i:]) print(*sorted(list), sep='\n') #*은 unpacking연산자. 반환된 리스트의 모든 요소를 #개별적인 인자로 unpacking하겠다 #정렬된 리스트의 요소들을 개별적인 인자로 출력하며, # 이때 요소들 사이에는 개행문자('\n')가 들어간다는 의미 n=input() list=[] for i in range(1, len(n)+1): #range함수는 끝 인덱스를 포함하지 않는 범위 반환 list.append(n[-i:]) list=sorted(list) for i in range(len(list)): prin..
- Total
- Today
- Yesterday
- JPA
- 자바 스프링
- 로깅
- elasticsearch
- SQLD
- SQL 레벨업
- 다이나믹 프로그래밍
- 비영속
- 북마크
- 웹 MVC
- 백준
- 준영속
- 회원탈퇴
- 백준 파이썬
- 자바
- 스프링
- 프론트엔드
- 웹MVC
- 커뮤니티
- 영속
- 스프링 북마크
- EnumType.ORDINAL
- 스프링 커뮤니티
- 로그아웃
- 지연로딩
- DP
- SQL
- 인텔리제이
- 파이썬
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |