본문 바로가기

분류 전체보기160

백준 11286: 절댓값 힙 (파이썬 풀이) https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 이 문제는 절댓값을 비교해서 가장 작은 값을 꺼내야 하므로, 우선순위 큐에 절댓값을 저장해야 합니다. 하지만 절댓값이 같은 수가 여러개 있을 경우 그중에 작은값(양수와 음수가 있다면 음수)을 골라야하므로 원래 원본 값도 같이 저장해야 합니다. 따라서 우선순위큐에 튜플을 이용하여 (절댓값, 원본값)을 우선순위큐에 넣어줍니다. 우선순위큐는 선형 자료구조일 경우 기본적으로 맨 앞의.. 2022. 8. 17.
22/08/08 백준하면서 간단한 기록 import sys input = sys.stdin.readline 파이썬의 입출력을 빠른 속도로 할 수 있다. from collections import defaultdict d = defaultdict(int) default_dict를 이용하여 딕셔너리를 만들면 위와 같이 int로 설정하면 지정하지 않은 키는 그 값이 0으로 지정된다. 인덱스 개수 셀 때 편리함 enumerate() 함수를 이용하면 인덱스와 원소를 동시에 접근하면서 루프를 돌릴 수 있다. 인덱스 개수 셀 때 편리함 파이썬 gcd, lcm def gcd(a, b): # 최대공약수 while b > 0: a, b = b, a % b return a def lcm(a, b): # 최소공배수 return a * b / gcd(a, b) 파이.. 2022. 8. 8.
Spring Security 간단 적용 애플리케이션을 만들기 위해서는 보통 인증/인가 등의 보안이 필요합니다. 스프링 시큐리티는 스프링 기반의 애플리케이션을 위한 보안 솔루션을 제공합니다. 인증 웹에서 인증이란 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것 예를들어 커뮤니티 사이트에서 게시판의 글을 보는 것은 로그인을 하지않아도 되지만, 댓글을 작성하려면 로그인을 해야하기때문에 인증이라는 절차가 필요하다. 인가 인증 과정 이후에 일어나는 일로 커뮤니티를 관리하는 관리자 페이지에는 관리자만 접근할 수 있고 일반 사용자의 접근을 막아야한다. 이때 접근하는 사용자가 관리자 페이지 URL에 대해서 인가된 회원인지를 검사하는 것이다. maven으로 security dependency를 추가하였다. org.springframework.. 2022. 8. 1.
자바 예외 이해 Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다. 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문에다. 애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다. Exception : 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException 은 예외로 한다 RuntimeException : 언.. 2022. 7. 28.
트랜잭션의 개념과 이해 우리가 데이터를 파일이 아닌 데이터베이스에 저장하는 이유는 데이터베이스는 트랜잭션이라는 개념을 지원한다. 트랜잭션은 데이터베이스 안에서 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 예를 들어 A가 B에게 5000원을 계좌이체 하는 상황에서 1. A의 잔고 5000원 감소 2. B의 잔고 5000원 증가 이 두가지 작업이 하나의 작업처럼 진행되어야 한다. 트랜잭션이 없다면 1이 성공했을때 2는 실패하거나 2가 성공했을 때 1이 실패하면 큰 문제를 야기할 수 있다 트랜잭션 기능을 사용하면 둘 다 성공해야 결과를 저장(Commit)하고 하나라도 실패하면 그 전의 상황으로 롤백(Rollback)한다. 트랜잭션은 ACID를 보장해야한다. 원자성 (Atomicity) - 트랜잭션 내에서 실행한 작업들.. 2022. 7. 24.
Spring Boot 와 JWT JWT는 JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이라고 정의할 수 있다. JWT를 이용하는 방식은 헤비하지 않고 아주 간편하고 쉽게 적용할 수 있어서 사이드 프로젝트를 진행할 때 유용하다. JWT의 장점 중앙의 인증서버 의존성 없음 데이터 스토어에 대한 의존성 없음 시스템 수평 확장 유리 Base64의 URL Safe Encoding을 이용하기 때문에 URL, Cookie, Header 모두 사용 가능 JWT의 단점 Payload의 정보가 많아지면 네트워크 사용량 증가 -> 데이터 설계 고려 필요 토큰을 클라이언트에 저장 -> 서버에서 토큰을 조작할 수 없음 실습을 진행중인데 어려워서 좀 더 공부하고 적어야 할듯 싶다. 2022. 7. 20.