반응형

분류 전체보기 210

[백준/Python] 듣보잡

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net [ 처음 코드 ] - 시간 초과 n, m = map(int, input().split()) not_listen = [input() for _ in range(n)] not_look = [input() for _ in range(m)] # 듣보잡 구한 후 사전 순으로 정렬 result = [i for i in not_listen if i in not_look] result.sort() print(..

Algorithm/백준 2021.10.06

[백준/Python] 숨바꼭질 6

https://www.acmicpc.net/problem/17087 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net n, S = map(int, input().split()) pos = list(map(int, input().split())) dif = list(set(abs(p - S) for p in pos)) # 수빈이와 동생들의 위치 차이 리스트 D = min(dif) # 최대공약수 구하는 메서드 def gcd(a, b): res = 0 while b: res = a % ..

Algorithm/백준 2021.10.05

[백준/Python] 01타일

https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net n = int(input()) tile = [0, 1, 2] # 만들 수 있는 2진 수열의 개수 length = len(tile) # 크기가 n인 2진 수열의 개수 if n >= length: for i in range(length, n+1): tile.append((tile[i-1] + tile[i-2])% 15746) print(tile[n]) 이 문제는 동적계획법 문제이기 때문에 각 n의 만들 수..

Algorithm/백준 2021.10.03

[백준/Python] 골드바흐의 추측

https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net n = int(input()) prime = [0, 0] + [1] * 9999 # 소수 리스트 # 에라토스테네스의 체를 이용하여 소수 구하기 for i in range(2, int(10000 ** 0.5)+1): if prime[i]: for j in range(i*2, 10001, i): prime[j] = 0 # 두 소수의 차이가 가장 작은 골드바흐 파티션 구하기 for ..

Algorithm/백준 2021.10.03

[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
반응형