다라다라V
article thumbnail
[백준] 1715번 파이썬 - 그리디

문제요약 (1715. 카드 정렬하기) 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10..

article thumbnail
[백준] 11047번 파이썬 - 그리디

문제요약 (11047. 동전 0) 원하는 돈의 가치를 만들기 위해 필요한 동전의 최소 갯수를 구해 출력하라 다양한 경우의 수가 있지만 최소 갯수를 구해야한다. 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이를 위한 개념 그리디에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다. [코테 알고리즘] DFS, BFS / 관련 문제 본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직접 문제를 풀며 관련..

article thumbnail
[백준] 1920번 파이썬 - 이분탐색

문제요약 ( 1920.수 찾기 ) 주어진 리스트에 원하는 값이 있는지 찾아 출력한다.. 풀이를 위한 부연 설명 정렬 알고리즘은 O(nlogn)의 시간 복잡도를 가진다. 이분탐색의 경우 O(nlogn)의 시간 복잡도를 가진다. 이분 탐색은 정렬된 데이터에 대해 실행할 수 있으므로 미리 sort()해야한다. 코드 import sys input = sys.stdin.readline num = int(input()) nums = list(map(int, input().split())) nums.sort() find = int(input()) finds = list(map(int, input().split())) for target in finds: first = 0 last = num - 1 isFind = F..

article thumbnail
[백준] 2178번 파이썬 - BFS 풀이

문제 요약 (2178. 미로 탐색) n * m 크기의 배열로 표현되는 미로가 주어질 때, (1, 1) 부터 (n, m)으로 이동하기 위해 지나가야하는 칸 수의 최솟값을 구해 출력한다. 배열의 n, m 모두 100 이하이기 때문에 시간 복잡도는 걱정할 필요는 없다. 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이를 위한 부연 설명 길찾기를 위한 표의 경우 45도 꺽어서 보면 그래프로 표현할 수 있다. 그래프의 문제의 경우 DFS와 BFS를 이용한 풀이 두 가지 모두 생각할 수 있다 그러나 해당 문제는 BFS를 통해 문제를 풀어야한다 완전..

article thumbnail
[백준] 2023번 파이썬 - DFS 풀이

문제요약 (2023. 신기한 소수) 소수 중에서 각 자리수 별로 나눠도 모두 소수라는 성질을 유지하는 소수를 찾아 출력한다. ex. 7331 -> 7331, 733, 73, 7 모두 소수 -> 우리가 구하고자 하는 수 정수를 입력 받고, 입력받은 정수 값의 자리 수만을 출력한다. 2부터 증가하면서 소수를 찾으면 시간초과에 걸릴 것이다. 다른 방법을 생각해봐야한다. 또한 뒷 자리수부터 숫자가 제거된다는 사실도 문제 해결의 키로 작용할 것이다. 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 풀이를 위..

article thumbnail
[백준] 11724번 파이썬 - DFS 풀이

문제 요약 (11724. 연결 요소의 개수) 방향이 없는 그래프(양방향 그래프)의 노드와 간선이 주어졌을 때 연결 요소의 개수를 구하는 것이다. 연결 요소는 연결된 노드들의 뭉텅이라고 생각하면 문제를 풀기 편하다. ex. 1-5-2, 3-4, 6 이렇게 연결되어 있다면 연결 요소의 개수는 3이다. 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 풀이를 위한 부연 설명 입력되는 값들을 받아 그래프를 완성한다. 그래프 내에서 연결 요소를 찾아야하므로 ..

article thumbnail
서비스의 인증과 권한 부여
프레임워크/Spring 2023. 12. 31. 23:11

보안 용어 이해 인증 인증(authentication): 사용자가 누구인지를 확인하는 단계 가장 대표적인 인증의예가 "로그인" 데이터베이스에 등록된 아이디와 패스워드를 사용자가 입력한 아이디와 비밀번호와 비교해 일치 여부 확인 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰(token)을 전달 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소 스에 접근할 수 없음 인가 인가(authorization): 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접 근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정 예) 로그 인한 사용자가 특정 게시판에 접근해서 글을 보려고 하는 경우 게시판 접근 등급을 확인해 접근을 허가 하거나 거부하는 것 일반적으로 사용자가 인..

article thumbnail
연관관계 매핑
프레임워크/Spring 2023. 11. 26. 17:21

연관관계 매핑 연관관계 매핑 종류와 방향 연관관계를 맺는 두 엔티티 간에 생성할 수 있는 연관관계의 종류 One To One : 일대일 One To Many : 일대다 Many To One: 다대일 Many To Many: 다대다 공급 업체 입장에서 보면 한 가게에 납품하는 상품이 여러 개 있을 수 있으므로 상품 엔티티와는 일대다 관계 상품 입장에서 보면 하나의 공급업체에 속하게 되므로 다대일 관계 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관계의 상태가 달라짐 데이터베이스에서는 두 테이블의 연관관계를 설정하면 "외래키"를 통해 서로 조인해서 참조하는 구조로 생성 JPA를 사용하는 객체지향 모델에서는 엔티티 간 참조 방향을 설정 데이터베이스와 관계를 일치시키기 위해 양방향으로 설정해도 무관하..

article thumbnail
ORM의 개념과 JPA
프레임워크/Spring 2023. 10. 30. 23:47

데이터 베이스 연동 마리아 DB 설치 애플리케이션은 데이터를 주고 받는 것이 주 목적 정상적으로 로직이 동작하기 위해서는 데이터베이스(DB)가 반드시 필요하고, 그 중 가장 널리 사용되는 마리아 DB를 사용할 예정 마리아 DB 다운로드 페이지(https://mariadb.org/download) 에서 다운 가능 해당 사진과 같이 버전을 10.6.5로 맞추는 것이 좋음. Display older releases를 체크하면 이전 버전을 선택할 수 있음 Next를 눌러 설치를 진행 해당 화면이 나오면 root 계정의 비밀번호를 생성 실무에서는 보안상 root 패스워드는 사용하지 않지만, 실습에서는 사용 문자 인코딩 방법을 UTF-8을 기본값으로 설정하기 위해 아래도 체크 서버 이름과 포트 번호를 설정 포트 번..

article thumbnail
JPA와 스프링 데이터 JPA
프레임워크/Spring 2023. 10. 3. 13:56

JPA JPA ORM(Object-Relational-Mapping) 으로 객체와 테이블을 매핑해주는 인터페이스모음 기존의 반복 코드를 줄이고, 기본적인 쿼리문도 직접 만들어서 실행해 코드를 간결하게 작성함 SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환하여 개발 생산성을 크게 높임 ORM(Object-Relational-Mapping) 우리가 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다. JPA 사용을 위한 설정 1. build.gradle 파일에 아래와 같은 라이브러리를 추가 implementation 'o..