✏️ 공부 내용1학기 Final 관통을 진행하면서 OAuth2.0을 활용한 로그인 구현을 맡게 되었다.초반에는 Spring Security를 사용하지 않고 구현하였다가 이후에 Spring Security를 적용하였는데 해당 과정에서 기존 코드와 달라진게 많아 정리해보았다.배경네이버, 구글, 카카오,... 중에 카카오 연동 로그인을 구현하였다.Spring Security를 사용하지 않은 경우, redirect uri를 프론트로 지정하였고Spring Security를 사용한 경우, redirect uri를 백으로 지정하였다. OAuth2.0 (w/o Spring Security)과정1. Service Client가 로그인 요청을 한다.2. Service Server가 yml 파일에 저장된 내용을 이용해 Au..
전체 글
🤔 고민블로그를 위한 ERD 설계 과정에서 UUID와 auto increment 중에 무엇을 PK로 선택해야할지에 대해 고민이 생겼다.UUID(Universally Unique Identifier)란?네트워크상에서 고유성을 보장하는 ID를 만들기 위한 표준 규약128bit의 고유 식별자다른 고유 ID 생성 방법과 다르게 UUID는 중앙 시스템에 등록하고 발급하는 과정이 없어서 상대적으로 더 빠르고 간단하게 만들 수 있음중복될 확률이 매우 낮음 (10억 분의 1)UUID 구조128-bit의 숫자 문자열이며 총 길이는 36자리32개의 16진수 숫자4개의 하이픈(-)으로 나누어진 8-4-4-4-12 형태하이픈 사이 16진수 숫자들 = 하나의 필드각 필드는 정수로 취급되며 가장 중요한 숫자가 앞에 나옴ex) ..
# 위상 정렬이란? 순서가 정해져 있는 작업들을 차례대로 수행해야 할 때, 그 순서를 결정해주는 알고리즘 선후 관계가 정의된 그래프 위상 정렬이 성립하기 위해서는 방향 비순환 그래프이어야 한다. # 흐름 0. 모든 정점의 진입 차수를 계산한다. 진입 차수(in-degree) : 자신으로 들어오는 간선의 수 1. 진입 차수가 0인 정점을 모두 큐에 넣는다. 진입 차수가 0인 정점 = 시작점 위 경우에서는 A, E가 큐에 들어가게 된다. 2. 큐에서 정점을 꺼내어 해당 정점과 인접한 정점의 간선을 제거하고 인접한 정점의 진입 차수를 1 감소시킨다. 인접한 정점의 진입 차수가 1 감소 이후 0이 된다면 인접한 정점을 큐에 넣어준다. 큐가 빈 상태가 될 때까지 반복한다. # 관련 문제 (2252 - 줄 세우기 ..
6137번: 문자열 생성 첫 번째 줄에 문자열 S의 길이 N이 주어진다. (N 실패 : 한 번만 옆을 비교하는 경우 양 끝이 여러번 같은 경우 이상하게 나옴 (ex. CCACFBCC) => 그럼 다른 글자가 나올 때까지 양 끝을 비교하면 되겠네? => 실패 실패 실패 실패 ... => ?????????? (결국 포기) => 하루 지나서 문득 생각난 오류 = 전체 문자열에 대해서 돌리고 80번째에서 새 줄로 변경한 것이 아니라 80개씩 잘라서 양끝 비교하고 출력함... => 수정 => 통과 아,, 즐겁당^^ 풀이 과정 1. 문자열 S의 길이(N)을 입력 받는다. 2. 입력받은 문자를 char[] S에 저장한다. 3. 투 포인터를 이용하여 배열 S의 양 끝 문자를 비교한다. 만약 S[start] < S[en..
🗓️ 일정 지원서 접수 : 2023.10.23(월) ~ 2023.11.06(월) 에세이 제출 : 2023.11.07(화) ~ 2023.11.18(토) SW 적성 진단 (SW 전공) : 2023.11.19(일) SW 적성 진단 결과 발표 : 2023.11.28(화) 인터뷰 : 2023.12.06(수) ~ 2023.12.12(화) 인터뷰 결과 발표 : 2023.12.21(목) 15:00 🔍 지원 동기 및 스펙 4학년 2학기 기념(?) 취준해보려는 과정에서 다른 사람들에 비해 한참 부족하다는게 계속 느껴져서 혼자 고민도 많고 우울했던 상황🫠 날 뽑아줄 회사는 없을 것 같으니까 일단 처음부터 다시 배우자!라는 마음으로 싸피를 지원하게 되었다. 쓰고 보니 다시 우울하넹,, 부족한 나의 스펙을 정리해보자면,,, 4..
15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net 의식의 흐름 일단 2차원 배열에 넣고 1,2,3,4에 따라서 나눠주고 중복되는지 확인하고..? 근데 중복을 하나하나 다 확인해야하나..? (헤매다가) HashSet 쓰면 되겠댱 풀이 과정 1. 기차의 수(N), 명령의 수(M)을 입력받는다. 2. 명령의 종류에 따라 배열(seats)에 사람 유무를 나타낸다. 타있는 경우 => seats[i][x] = true, 타고있지 않은 경우 => seats[i][x] = false; 1 i x : seat[i][..
17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 의식의 흐름 dp로 1~n까지 만드는데 필요한 최소 개수 구해보자. + 종이에 1~12까지 구할 수 있는 최소 경우의 수를 써보는데 12 = 3^2+1^2+1^2+1^2(4개) / 2^2+2^2+2^2(3개)로 나뉘는 것을 확인하고 무조건 최대 제곱수를 쓰면 틀리겠구나 생각함 풀이 과정 1. 자연수(n)을 입력받는다. 2. 1~n까지 만드는데 필요한 제곱수의 최소 개수를 구하여 배열(dp)에 저장한다. dp[i] = i를 만드는..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 의식의 흐름 dp 문제네 -> 0원~n원까지 가능한 경우의 수를 다 저장하면 되겠다. -> 풀고 나니 1,000,000,007로 나눈 나머지라는 조건을 까먹고 그냥 원래 값을 return했는데 통과네..? -> 1,000,000,0007로 나누는 코드 추가해서 제출했는데 시간 초과 🙄 -> 코드 살짝 수정하고 통과 문제 자체는 어렵지 않았는데 이 문제 덕분에 내가 쓰던 로직을 살짝 수정해서 좀 더 빠른 로직으로 수정할 수 있었다 풀이 과정 1. i번째 동전까지 사용해서 j원 만들 수 있는 경우의 수를 담을 배..
21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 의식의 흐름 빡구현,... 풀이 과정 1. 교실 크기(N)를 입력받는다. 2. 각 학생의 자리를 찾는다. 2-1) 학생 번호(studentNum), 좋아하는 학생들의 번호(favorites[studentNum])을 입력받는다. 2-2) 학생들의 자리를 지정한 배열(seat)을 이용하여 각 자리 정보(Seat)를 ArrayList(possibleSeats)에 저장한다. 자리 정보(Seat)는 'x좌표, y좌표, 근처 빈자리 개수, 근처 좋아하는 학생 수'..