전체 글 363

백준 7562 나이트의 이동(c++)

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net #include #include #include #define max 301 using namespace std; queueq; int board[max][max]; bool visited[max][max]; int mov [8][2] = {{2,1},{1,2},{-2,1},{-1,2},{-2,-1},{-1,-2},{1,-2},{2,-1}}; // 말의 이동 int main() { int t; ci..

SpringBoot JPA(Java Persistence API) 사용 목적

유지, 보수와 효율성 증대 JPA를 사용하지 않고, SQL문으로 테이블을 생성한다면 일일히 CRUD를 작성해주어야 한다. 하지만, JPA를 사용한다면 일일히 CRUD문을 작성하지 않고 JPA에게 저장할 객체로 전달해주면 된다. 테이블 간에 연관관계를 정의하기 위해 사용 ex) entity가 2개일 때, 작성자 entity ↔ 게시글 entity간의 연관관계를 정의하기 위해서는 1 : 1(OnetoOne,일대일), 1 : n(OnetoMany,일대다), n: 1(ManytoOne,다대일)이 있다. 작성자 한 명은 여러 개의 게시글을 사용할 수 있으므로, 작성자 입장에서는 1 : n(일대다,OnetoMany) 관계지만, 게시글 입장에서는 다대일(ManytoOne)관계이다(여러 개의 게시글들을 한 명이 쓸 수..

Java/Spring 2022.08.05

백준 1012 유기농 배추(c++)

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net #include #include #include #define max 51 using namespace std; int mov[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; int board[max][max]; bool visited[max][max] = {0}; int n,m,x,y; int cnt=0; void dfs(int a,int b) { visited[a][b] = true; f..

DTO, DAO, Repository, Entity 개념

Entity(Domain) 데이터베이스에 쓰일 컬럼 및 여러 엔티티 간의 연관관계 데이터베이스의 테이블을 하나의 엔티티로 생각해도 됨 DB 테이블과 1:1 매핑 Repository Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스 Service와 DB를 연결하는 고리의 역할 DB에 적용하고자 하는 CRUD를 정의하는 영역 DAO(Data Access Object) DB에 접근하는 객체를 의미 Service가 DB에 연결할 수 있게 해주는 역할 DB를 사용하여 데이터를 조회하거나 조작 DTO(Data Transfer Object) DTO는 VO(value Object)이며, 계층간 데이터 교환을 위한 객체를 의미 (Read Only 개념을 담고 있음) Spring Boot의 서비..

Java/Spring 2022.08.04

재귀(recursion) 개념정리

재귀 함수 자기 자신을 호출하는 함수 Base Case : 간단히 결과를 반환하는 부분 Recursive Case : 자기 자신을 호출하는 부분 factorial - n==0 n! =1 // Base Case n>0 n! = n * (n-1)! // Recursive case 재귀를 활용한 flood fill 알고리즘 #include using namespace std; int n, Board[100][100]; void fill(int r,int c) { if(rn-1 || c n-1) return; //경계면을 벗어나면 return if(Board[r][c]) return; //벽이 있으면 return Board[r][c] = 1; fill(r-1,c);//위 fill(r+1,c);//아래 fill(..

백준 4963 섬의 개수(c++)

https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net #include #include #include #define max 51 using namespace std; int w,h,n,m; int board[max][max]; bool visited[max][max] = {0}; int dir[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{1,1},{-1,-1},{1,-1},{-1,1}}; //상하좌우 대각선 이동 void d..

백준 11724 연결 요소의 개수(c++)

https://www.acmicpc.net/problem/11724 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 이 문제는 dfs, bfs의 기본 문제이다. #include #include #include #include #include #define max 1001 int board[max][max]; bool visited[max] = {0}; int cnt=0; int n,m; using namespace std; //void dfs(int..

백준 2606 바이러스(c++)

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net bfs #include #include #include #include #define max 101 using namespace std; int n, com; int cnt=0; int graph[max][max]; void bfs(int node){ bool visited[max]= {false}; queuemyqueue; visited[node]=true; myqueue.push(node); whi..

백준 2178 미로 탐색(c++)

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net #include #include #include #include #define max 101 using namespace std; queueq; int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; int board[max][max]; int n,m; string s; void bfs(int x,int y){ bool visited[max][max] = {false}; visited[x][y]=true..