본문 바로가기

전체 글78

[에러모음] Failed to configure a DataSource 에러 설명 이클립스에서 프로젝트를 스프링 부트로 실행할 때 나는 에러 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 해결 프로젝트의 application.properties 파일에 JDBC url을 추가하면 된다. # DataSource spring.datasource.url=jdbc:mysql://localhost:3306/[DB스키마명]?serverTimeZone=Asia/Seoul spring.datasource.username=[DB접속Id] spring.datasource.password=[DB접속Password] spring.dataso.. 2023. 3. 3.
[에러모음] java.lang.UnsupportedClassVersionError 에러 설명 자바 스프링 프레임워크에서 새로 프로젝트를 만든 후 프로젝트 실행 했을 때 빌드가 제대로 되지 않아 나는 에러 Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 해결 스프링 부트 버전 맞게 낮추면 된다 (나의 경우는 원래 3.0.3 으로 되어 있던걸 .. 2023. 3. 2.
Spring Security란? Goal 1. Spring Security가 무엇인지 알아보기 2. 인증과 인가의 차이 살펴보기 Spring Security란? 인증(authentication)과 인가(authorization) 제공 및 권한 제어에 필요한 필터의 모음이며 회원 관리를 하기 위해선 필수이다 외부 공격으로부터 여러가지 보호 기능을 제공하는 스프링의 프레임워크이다 서블릿 필터 체인을 구성하는데 필터 체인이란 여러개의 필터를 순차적으로 적용하는 것이다 인증 vs. 인가 용어 뜻 관련 인터페이스/클래스 인증 사용자가 입력한 정보와 DB에 있는 정보를 비교해서 신원을 확인하는 과정 AuthenticationManager (이걸 설정해줘야함), Authentication 인가 인증을 통해 사용자가 가진 권한이 확인된 후 해당 사용.. 2023. 3. 1.
[백준] 1927번: 최소 힙 Hint 1. 힙 자료구조 이용하기 (힙이란?) 2. 힙에서 heappop()을 하면 가장 작은 값이 반환 됨 백준 1927번: 최소 힙 import heapq import sys n = int(sys.stdin.readline()) heap = [] # 힙 만들기(리스트랑 만드는 법은 똑같음) for i in range(n): num = int(sys.stdin.readline()) if num == 0: # input 숫자가 0 이면 현재 힙에 들어있는 최소값 출력하기 print(heapq.heappop(heap) if heap != [] else 0) # 힙이 비어있지 않을 때만 heappop() 하기 else: heapq.heappush(heap, num) # 힙에 숫자 넣기 2023. 2. 28.
[백준] 11279번: 최대 힙 Hint 1. 힙 자료구조 이용하기 (힙이란?) 2. 힙에서 heappop()을 하면 가장 작은 값이 반환 됨. 그렇다면 가장 큰 값을 반환하려면..? 3. 힙에 넣은 숫자들을 마이너스 해서 넣는다면 heappop() 했을 때 어떤 숫자가 먼저 뽑힐까? 백준 11279번: 최대 힙 import heapq import sys n = int(sys.stdin.readline()) heap = [] # 힙 만들기(리스트랑 만드는 법은 똑같음) for i in range(n): num = int(sys.stdin.readline()) if num == 0: # input 숫자가 0 이면 현재 힙에 들어있는 최대대값 출력하기 print((heapq.heappop(heap))*(-1) if heap != [] el.. 2023. 2. 26.
[백준] 2075번: N번째 큰 수 Hint 1. 우선순위 큐 - 힙(heap) 자료구조 이용하기 (그게 뭐지?) 2. 힙에서 heappop()을 이용하면 작은 수 부터 출력된다! 백준 2075번: N번째 큰 수 (풀어보기) import heapq N = int(input()) heap = []# 새로운 힙 만들기 for i in range(N): for num in map(int, input().split()): heapq.heappush(heap, num)# 힙에 숫자 삽입하기 if len(heap) > N:# 힙의 원소의 개수가 N개를 넘어가면 heapq.heappop(heap)# 힙에서 가장 작은 수 제거하기 print(heapq.heappop(heap))# N번째로 큰 수 출력하기 2023. 2. 24.
[백준] 11286번: 절댓값 힙 Hint 1. 힙 자료구조에 튜플을 넣을 수 있다 2. 힙 안의 튜플은 들어있는 순서대로 작은거부터 큰거까지 정렬된다 3. 힙 응용방법 알아보기 (여기) 백준 11286번 (풀어보기) import heapq import sys heap = [] for i in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) if n == 0: if heap == []: print(0) else: print(heapq.heappop(heap)[1])# 가장 작은 절댓값을 가진 숫자 n 출력하기 else: heapq.heappush(heap, (abs(n), n))# 튜플 형태로 n의 절댓값과 n을 둘 다 넣어줌 2023. 2. 21.
오버로딩과 오버라이딩의 차이 Goal 1. 오버로딩과 오버라이딩의 차이점 설명하기 오버로딩 vs. 오버라이딩 차이점 오버로딩 오버라이딩 정의 한 클래스 내에 같은 이름을 가진 메서드를 여러개 정의하는 것 상속 받은 메서드를 재정의하는 것 메서드 이름 같음 같음 메서드 매개변수 개수, 타입 다름 같음 실행 코드 다름 (매개변수랑 타입이 달라지기 때문에 다를 수 밖에 없음) 다름 반환 타입 상관 없음 같음 어노테이션 없음 @Override 2023. 2. 19.
[백준] 1929번: 소수 구하기 Hint 1. 1부터 n까지의 숫자가 소수인지 아닌지 확인을 하고, 소수이면 그 숫자의 배수들은 소수일까요? 2. 소수의 배수들은 소수가 아닌게 확실하기 때문에 미리 제거해주면 나중에 소수인지 확인할 필요가 없다! 3. 에라토스테네스의 체 이용하기 (그게 뭐지?) 백준 1929번: 소수 구하기 (풀어보기) import sys M, N = map(int, sys.stdin.readline().split()) # N까지의 숫자의 소수인지 아닌지에 대한 여부를 판단하는 배열 만들기 # 이것이 에레스토스테네스의 체! is_prime = [True] * (N+1) is_prime[0], is_prime[1] = False, False # 2부터 N까지의 숫자의 배수는 모두 소수가 아니라고 False로 바꿔주기 f.. 2023. 2. 18.