목록전체 글 (153)
늘
저번에 jwt토큰 방식에 대해서 설명을 드리고 이번에는 스프링의 전통 기반인 session 인증 방식에서 간단하게 적용해 보려고 해요. 이번 포스트는 세션 방식으로 웹페이지 로그인, 회원가입을 구현하면서 느낀 점을 적어보려고 합니다...! 이번 포스트도 이용한 프레임워크는 springboot + gradle + h2 + springsecurity입니다. package board.configuration; import board.Service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springfra..
다익스트라 알고리즘을 처음 배우고 풀었던 문제였다. 다익스트라만 적용하면 금방 풀리는 쉬운 문제였다..! #include #include #include #include using namespace std; int answer[20001];//최소 비용 vector line[300001];// 간선 int INF = 2000010; void dijstra(int start) { answer[start] = 0; priority_queue pq; pq.push(make_pair(0, start)); while (!pq.empty()) { int current = pq.top().second; int distance = -pq.top().first;//최소 힙으로 변환 pq.pop(); if (answer[..
안녕하세요.. 항상 알고리즘이나 백앤드 개발 개념 관련만 글 쓰다가 제 이야기를 쓰는 건 처음인 거 같은데요 ㅎㅎ 작년엔 코로나등 으로 진행되지 않았다고 들었는데 올해는 다시 멋쟁이 사자처럼이 홍익대학교에 상륙했습니다...! (시작일이 기억이 안나요..ㅠ)~3월 12일 : 지원서 접수! 3월 15일 : 1차 서류 발표(합격!) 3월 18일 ~ 3월 19일 : 면접 3월 23일 : 최종 합격 발표 위와 같은 순서로 이번에 진행이 되었는데요. 사실 작년에 갓 전역을 하고 멋사로 복학을 출발하고 싶었지만, 하지 못했던 아쉬움이 있었는데 다행히 이번에는 참여할 수 있게 되었어요..! 간단히 합격 수기(?)같은걸 적어보자면 기억 남는 것은 서류 작성할 때, 글자 수 제한이 없었던 점 면접 글자 수 제한이 없어서 ..
level 2였지만 쉬웠던 문제였다. 간단히 방정식만 생각하면 되었다..! (x-2)*(y-2) = yellow 2*x+2*y-4 = brown 아마 이 수식 계산하는게 복잡해서 level2인가..? 싶다..! #include #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int x, y; y= ((4+brown) + sqrt(pow(4+brown,2) - 8*(2*yellow + 2*brown)))/4; x = (yellow+brown)/y; if(x>y){ answer.push_back(x); answer.push_back(y); }else{ answer.push_back(y);..
백준 저울문제 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..