일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 레벨2
- 트랜잭션
- JUnit5
- AOP
- 의존성
- Paging
- 우아한세미나
- 미션
- yml
- mock
- CircuitBreaker
- JPA
- 세션
- 우아한테크코스
- 자바
- 백준
- MSA
- Spring Batch
- 코드리뷰
- Docker
- 프로그래머스
- 스프링 부트
- 프리코스
- Level2
- 서블릿
- 스프링부트
- 우테코
- REDIS
- HTTP
- AWS
- Today
- Total
목록전체 글 (159)
늘

백준 저울문제 www.acmicpc.net/problem/2437를 못풀어서 한이 맺혀서 프로그래머스 그리디 문제를 풀었다..!! 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net level2 치고는 쉬운 그리디 문제였다. 덕분에 그리디 자신감도 다시 찾았다!! *그리디 여러 문제 풀어보면서 그리디는 은근 아이디어 싸움(?) 인것 같다. 난이도가 높아질수록.. #include #include #include using namespace std; int solution(vector people, int limit) { in..

너무 어려웠다... 초등부 3번 문제라는데...하 그리디 문제에 대해서 더욱 공부해볼 계획이다. #include #include using namespace std; int arr[1001]; int dp[1000000]; int main(){ int n; int sum=1; cin>>n; for(int i=0; i>arr[i]; } sort(arr, arr+n); for(int i=0; i sum){ break; } sum+=arr[i]; } cout

요즘 그리디가 너무 안 풀리는것 같다 ㅠㅠ 마지막 A의 위치에 따라 조이스틱 좌우 방향을 결정 짓는 부분에서 오래걸렸다... 결국 블로거님을 참고하여서 경우의 수를 알았다.. 4가지 경우의 수 ▶ (): 뒷부분이 A인 경우 최소 Ex) BBBBAA이면 오른쪽으로 3번만 이동하면 됨 ◀ :앞부분이 A인 경우 최소 Ex) AAAAABBB이면 왼쪽으로 3번만 이동하면 됨 ▶◀ : 중간에 A가 많은 경우 중 앞부분에 A가 아닌 알파벳이 더 적은 경우 Ex) BBBAAAAAAAAABBBBB이면 오른쪽으로 2번, 왼쪽으로 2 + 5번. 즉, 2 * 2 + 5 = 9번만 이동하면 됨 ◀▶ : 중간에 A가 많은 경우 중 뒷부분에 A가 아닌 알파벳이 더 적은 경우 Ex) BBBBBBBAAAAAAAAABBB이면 왼쪽으로 ..

간단히 보이는 문제였는데 예외처리를 하는데에서 시간이 조금 걸렸다. (0으로 나눈다던가...) 그리고 풀긴 풀었지만 코드가 조금 맘에 안들긴 하다. 조금 난잡한 느낌(?)..! 하지만 처음으로 맥북으로 코딩해보아서 좋았다..ㅋㄷㅋㄷㅋㄷㅋㄷㅋㄷㅋㄷ #include #include #include #include #include using namespace std; int arr[501]; bool compare(const pair &a, const pair &b){ if(a.first == b.first){ return a.second b.first; } vector solution(int N, vector stages) { vector answer;..

요즘 Level.2 문제도 거뜬히 해결되는것 같아서 기분이 좋다 ㅎㅎ 내가 생각한 알고리즘은 순서대로 검사하되 만약 검사하는 문자가 안나온다면 skill을 돌면서 skill내의 문자가 이미 나왔는지 확인하는 방식이었다. 정말 오랜만에 1코1통을 했다...!(한번에 코딩하고 한방에 통과!) #include #include using namespace std; int solution(string skill, vector skill_trees) { int answer = 0; vector v; for(int i=0; i

Jwt와 Session방식의 차이에 대해서 공부했다. 우선 우리가 사용하는 스프링 부트는 Session기반으로 작동되어 있다고 한다. 그래서 평소 자연스럽게 이용했던 세션을 통한 인증 관리가 아닌 이번에는 JWT를 이용하여 회원 인증과 권한을 관리해보려고 한다..! 그전에 잠깐 Session&Cookie 기반 인증방식과 Token(jwt) 기반 인증 방식의 차이를 간단하게 설명해 보겠다. Session & Cookie 유저가 로그인하고 세션이 서버 메모리 상에 저장된다. (서버 단에서 메모리 차지가 클 수 있다.) session Id를 기준으로 정보를 전달한다. 브라우저에 쿠키로 session Id를 저장 -> 쿠키로 보내진다. JWT(Json Web Token) 방식 Header, Payload, Si..

예~전에 공부한 내용이지만 복습할 겸 글을 적어보려고 한다. 우선 이해하기 쉽게 정의를 해보자면 DAO: 실제 DB에 접근하는 객체 DTO: DB에서 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체 DAO는 최근(?)에는 Repository라고 부른다. 말 그대로 저장소인데 DB에 접근하는 객체(엔티티)로서 이러한 엔티티를 설계할 때는 주로 @setter를 추가하지 않는다. DB와 연관된 만큼 마음대로 수정되면 에러가 발생하기 쉽기 때문이다...! 주로 Builder등 다른 방식으로 이용하는데 이와 관련된 내용도 할 말이 많아서 다음에 포스팅하겠다.! DTO는 DAO로부터 받은 정보들을 controller나 service단에서 자유롭게 움직일 객체이다. 따라서 @getter @se..

상속 논리 모델을 DB 물리 모델로 구현하는데에는 크게 3가지가 있다고 한다. 1. 조인 전략 2. 단일 테이블 3. 구현 클래스 각각 테이블 전략(3번은 잘 안쓴다고 한다..그래서 제외!) 1. 조인 전략 우선 상속 전략을 InheritanceType.JOINED로 설정해준다 그러면 오른쪽 그림처럼 엔티티간에 각각의 DB 테이블이 생성할 수 있다. 가장 정규화된 방법이라고 한다. 2. 단일 테이블 서비스 규모가 크지 않고, 굳이 조인 전략을 선택해서 복잡하게 갈 필요가 없다고 판단 될 때에 이용한다. 한 테이블에 다 저장하고, DTYPE으로 구분하는 단일 테이블 전략을 선택할 수 있다. 개인적으로 작은 프로젝트를 해보면서 단일 테이블 전략에 매력을 느꼈었다. (한눈에 보기 좋아서..) 그런데 규모가 커..

카카오 level2! 처음에 함수로 안만들고 구현했더니 틀렸었다. 아무래도 재귀함수를 이용해야 해서 그랬던것 같다. 그래도 알고리즘 설명이 문제에 나와있어서 손쉽게 풀수 있었다! #include #include using namespace std; //u가 올바른 문자열인지 bool All(string u){ vector vec; vec.push_back('a'); for(int i=0;i

이 문제는 대회 당시에 시간초과로 시간을 많이 잡아먹었는데 대회가 끝나고 자료구조를 set으로 바꿔서 해보니 한번에 통과되어서 상당히 현타가 왔던 문제였다.... #include #include #include #include using namespace std; string s, e, q; set st; long long Change(string s) { string si = s.substr(0, 2); string boon = s.substr(3,2); return 60 * stol(si) + stol(boon); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> s >> e >> q; string str, name; int cnt = ..