반응형

It 200

[SpringBoot] 7주차 스터디 ② (OAuth, 카카오 로그인)

https://soohyun6879.tistory.com/211 [SpringBoot] 7주차 스터디 ① (스프링 시큐리티) 스프링 시큐리티란? - '스프링 시큐리티' 프레임워크는 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어준다. - 인증: 사용자 신원을 확인하는 행위 e soohyun6879.tistory.com 이전 포스팅에 이어서 카카오 로그인을 구현해보겠습니다! OAuth OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 접근 위임을 위한 개방형 표준이다. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할..

Back-end/Spring 2021.10.02

[SpringBoot] 7주차 스터디 ① (스프링 시큐리티)

스프링 시큐리티란? - '스프링 시큐리티' 프레임워크는 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어준다. - 인증: 사용자 신원을 확인하는 행위 ex) 로그인 통해 본인 확인 - 인가: 사용자의 권한을 사용하는 행위 ex) 역할에 따른 사용 권한 관리 (회원과 관리자) 이전에 만들어두었던 나만의 셀렉샵에 회원 가입 기능과 관리자 권한을 추가해보겠습니다. 1. 회원 가입 구현 사용자의 정보를 저장해야 하므로 User 테이블을 다음과 같이 생성한다. 사용자 역할을 구분할 수 있는 UserRole 도 생성한다. @Setter @Getter // get 함수를 일괄적으로 만들어줍니다. @NoArgsConstructor // 기본 생성자를 만들어줍니다. @Entity..

Back-end/Spring 2021.10.02

[백준/Python] 신나는 함수 실행

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제에 점화식이 다 나와있어서 점화식을 따로 구할 필요는 없었다. 동적계획법 문제이기 때문에 재귀함수의 결과만 리스트에 저장해두면 됐었다! dp = [[[0] * 21 for _ in range(21)] for _ in range(21)] def w(a, b, c): if a 20: return w(20, 20, 20) if dp[a][b][c] != 0: return dp[a][b][c] if a ..

Algorithm/백준 2021.10.02

[백준/Python] 베르트랑 공준

https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net import math while True: n = int(input()) if n == 0: break prime = [0, 0] + ([1] * (2*n-1)) # 소수 여부 저장 리스트, 0 - 소수X / 1 - 소수O # 소수 찾기 - 에라토스테네스의 체 for i in range(2, int(math.sqrt(2*n+1))+1): if prime[i]: for j in range(i..

Algorithm/백준 2021.10.01

[백준/Python] 피보나치 함수

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 이 문제는 동적계획법 문제였다. 동적 계획법 문제는 "규칙성"을 찾는 것이 중요하다. "규칙성"이 문제를 해결하는 핵심이 된다. 이 문제에서는 규칙성에 대해 친절히 설명해주어서 규칙성을 찾을 필요는 없었다. 피보나치의 규칙성은 f(n) = f(n-1) + f(n-2) 이다. N = int(input()) zero = [1, 0, 1] # 0의 개수 리스트 one = [0, 1, 1] # 1의 개수 리스트 for _ in range(N): n = int(input()) # n번째를 의미하는 변수..

Algorithm/백준 2021.09.30

[SpringBoot] 6주차 스터디(객체 지향, DI)

1. 절차적 프로그래밍 VS 객체 지향 프로그래밍 ● 절차적 프로그래밍 - Service, Repository 를 따로 두지 않고 Controller 하나로 모든 것을 해결하는 방식이다. 각 API의 처리 내용을 쭉 나열해놓는 코딩 방식을 의미한다. - 하지만 이런 방식은 문제가 있다! 테이블의 필드명을 바꾸거나 DB의 id와 pw 를 바꾸는 등의 경우 바꿔야 할 코드가 많다. 따라서 실수로 변경되지 않은 코드가 생길 수 있고 유지보수 하기 힘들어진다. ● 객체 지향 프로그래밍 - 서버에서의 처리 과정을 Controller, Service, Repository 로 분류하는 방식이다 ① Controller - 클라이언트의 요청과 응답을 처리한다. 요청에 대한 처리는 Service에게 전담한다. ② Serv..

Back-end/Spring 2021.09.23

[백준/Python] 스도쿠

https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net import sys sudoku = [list(map(int, sys.stdin.readline().split())) for _ in range(9)] # 스도쿠 숫자 리스트 zeros = [(i, j) for i in range(9) for j in range(9) if sudoku[i][j] == 0] # 해결해야 할 칸 리스트 flag = False # 답이 출력되었는지 확인하는 변수 # 가..

Algorithm/백준 2021.09.21

[백준/Python] N-Queen

https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 이 문제는 백트래킹 문제로 DFS를 사용하여 해결할 수 있었다. 근데 시간초과 문제 때문에 어려웠던 문제였다. 시간 초과를 해결하기 위해서는 1. 퀸을 배치할 수 있는지 확인할 때 break 를 사용하여 시간이 덜 걸리게 한다 2. pypy3 를 사용한다 (python3는 시간초과가 난다) def queen(n, N) : global result if n == N: # 더 이상 탐색할 수 없는 경우 재귀함수를 빠..

Algorithm/백준 2021.09.20

[백준/Python] 스타트와 링크

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net import sys n = int(sys.stdin.readline()) # 사람 수 graph = [list(map(int, sys.stdin.readline().split())) for _ in range(n)] # 능력치 리스트 visited = [False] * n # 방문 여부 리스트 answer = 1e9 # 능력치 차이의 최소값 # DFS 수행 def dfs(depth, now): global answer..

Algorithm/백준 2021.09.18

[백준/Python] 연산자 끼워넣기

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net n = int(input()) # 수의 개수 nums = list(map(int, input().split())) # 숫자 리스트 op = list(map(int, input().split())) # 연산자 리스트 r_max, r_min = -1e9, 1e9 # 식의 최대값, 최소값 # DFS 수행 def dfs(depth, result, p..

Algorithm/백준 2021.09.17
반응형