분류 전체보기
![[BOJ_16931] 겉넓이 구하기 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbch5Ol%2FbtruFfBfWcY%2Fb7AF7NXpnnA5WsxmzupS7k%2Fimg.png)
[BOJ_16931] 겉넓이 구하기 (java)
문제링크 https://www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 문제풀이 👨🏻💻 핵심 스킬 👨🏻💻 시뮬레이션, 구현 겉넓이를 모두 구해주는 문제이다. 윗면과 아랫면 그리고 옆면으로 나누어 구현을 해주면 된다. 윗면과 아랫면 윗면과 아랫면의 겉넓이를 구하는 방법은 매우 간단하다. 조건에서 주어진 $n*m$에 블럭이 1개 이상 들어가야하므로 항상 넓이는 $n*m$이 된다. 옆면 옆면의 넓이를 구하는 방법은 4방면으로 붙어있는 도형을 확인하..
![[BOJ_2290] LCD Test (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcelQUw%2FbtruI64e5NK%2FVcvAZvXgFVTKLanC6NBfU1%2Fimg.png)
[BOJ_2290] LCD Test (java)
문제링크 https://www.acmicpc.net/problem/2290 2290번: LCD Test 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. www.acmicpc.net 문제풀이 👨🏻💻 핵심 스킬 👨🏻💻 시뮬레이션 LCD Test 문제는 세그먼트로 생각하고 특정지점을 인덱싱하여 풀어주었다. 숫자를 표현해주어야하는 크기는 모두 동일하기 때문에 7-Segment와 동일하게 생각하여 해결해줄 수 있다. index를 잘 판단하여 A,B,C,D,E,F,G의 위치를 잡고 정해진 크기만큼 값을 넣어주기만 하면 된다. 그리고나서 0부터 9까지 각각 어느 지점의 세그먼트가 켜져야..

JPA로 CRUD하기
도입 지난 시간에 JPA 프로젝트를 설정하는 방법에 대하여 알아보았습니다. 이번시간에는 JPA로 CRUD를 하는 것을 알아보도록 하겠습니다. CRUD는 Create, Read, Update, Delete의 약자로 생성, 읽기, 갱신, 삭제를 의미합니다. 이번 포스팅에서는 DB에 데이터를 넣고, 조회하고, 수정하고, 삭제하는 방법을 알아보도록 하겠습니다. 시작 전에 JPA? 객체지향적인 언어와 RDB는 구현할 때 굉장히 모순적인 부분이 많습니다. 객체들이 협력하며 만들어낸 결과물들을 DB에 저장을 할 때는 객체가 아닌 테이블에 저장이 되기 때문에 테이블로 각각 데이터를 넣어주어야하는 번거로움이 있습니다. 이로써 객체지향적으로 프로그램을 개발하여도 RDB와 연동시켜주는 과정에서 굉장히 적은 생산성을 보여주었..

OSI 7계층을 알아보자.
OSI 7계층 OSI 7계층은 네트워크에서 정보를 주고받는 과정을 7단계로 나누어둔 것을 의미합니다. 물리계층(Physical Layer), 데이터 링크 계층(DataLink Layer), 네트워크 계층(Network Layer), 전송계층(Transport Layer), 세션계층(Session Layer), 표현 계층(Presentation Layer) 응용 계층(Application Layer)으로 이루어져 있습니다. 계층을 나누어 둠으로 써 통신이 일어나는 과정을 더 잘 알수 있으며 통신중에 문제가 생기면 어느 계층에서 문제가 생겼는지 확인하여 특정 계층의 장비만 교체한다던지의 과정으로 유지보수 소요를 줄일 수 있습니다. OSI 7계층과 TCP/IP는 동일한 역할을 수행하지만 TCP/IP는 4계층으..

JPA 프로젝트 설정(Maven, H2 DB)
H2 DataBase JPA를 사용하기 위해서는 데이터베이스가 필요합니다. 실습에 활용하기 좋은 DB인 H2를 사용하도록 하겠습니다. H2 DB의 장점은 굉장히 가볍습니다. 그리고 MySQL이나 Oracle DB 시뮬레이션도 가능합니다. H2 DB를 설치하는 방법을 알아보도록 하겠습니다. 설치 방법 H2 DB를 설치하기 위해서는 해당 웹페이지를 들어가보도록 하겠습니다. H2 DB 웹페이지 바로가기 H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Wr..
![[BOJ_15685] 드래곤 커브 (Java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUe5N%2FbtruKjiqwPl%2FG1AjkezeDDdmSSxcKqvmBk%2Fimg.png)
[BOJ_15685] 드래곤 커브 (Java)
문제링크 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 문제풀이 👨🏻💻 핵심 스킬 👨🏻💻 시뮬레이션 드래곤커브 문제를 봤을 때 굉장히 난해하다는 생각을 받았었습니다. 어떻게 그래프를 특정 점에서 90도씩 돌릴 수 있을까 고민을 많이 했는데, 생각해보니 그래프를 그릴 때 해당 점에서 어느 방향으로 이동하였는지만 알면 드래곤 커브를 구할 수 있었습니다. 드래곤 커브 문제는 특정 시작 점에서 시작 방향으로 1칸 이동하..
![[BOJ_15662] 톱니바퀴 ( java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnddE9%2FbtruHwJkPGC%2FnwcNwOLBZqRShKoPIOjEqk%2Fimg.png)
[BOJ_15662] 톱니바퀴 ( java)
문제링크 https://www.acmicpc.net/problem/15662 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제풀이 👨🏻💻 핵심 스킬 👨🏻💻 객체 구현 톱니바퀴라는 객체를 구현하여 문제를 해결할 수 있습니다. 톱니바퀴 객체의 동작은 왼쪽 혹은 오른쪽으로 굴러가는 것입니다. 그리고 추가적으로 왼쪽 톱니바퀴와 만나는 지점의 톱니의 값과 오른쪽 톱니바퀴와 만나는 지점의 톱니의 값 그리고 맨 위 지점의 톱니가 N인지 S인지 알려줄 수 있습니다. 톱니를 돌리는 방법은 index를 변경해주..
![[BOJ_14890] 경사로 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeduVhy%2FbtruDCQ3qWM%2F1SK2IDIOm3gIgyccv8faK0%2Fimg.png)
[BOJ_14890] 경사로 (java)
문제링크 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 👨🏻💻 핵심 스킬 👨🏻💻 구현,사고 경사로 문제를 해결하기 위해서 경사로의 조건을 충분히 이해하고 구현해주어야 합니다. 위 경우는 경사로에 놓을 수 있는 경우들을 의미합니다. 문제에서 제시되는 경사로의 길이만큼 충분히 같은 수의 길이 있을 경우 경사로를 놓을 수 있으며 경사로를 놓을 때는 항상 1만 차이가 나야합니다. 위 경우는 경사로에 놓을 수 없는 경우입니다. 높이 차이가 2 이상인 경우 경사로..
![[BOJ_14499] 주사위 굴리기 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH87oj%2FbtruG1bLdde%2FCVgmFQ3sFzTncJa80TukLK%2Fimg.png)
[BOJ_14499] 주사위 굴리기 (java)
문제링크 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5..
[BOJ_1261] 알고스팟 (java)
문제링크 https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 문제설명 더보기 문제 알고스팟 운영진이 모두 미로에 갇혔다. 미로는 N*M 크기이며, 총 1*1크기의 방으로 이루어져 있다. 미로는 빈 방 또는 벽으로 이루어져 있고, 빈 방은 자유롭게 다닐 수 있지만, 벽은 부수지 않으면 이동할 수 없다. 알고스팟 운영진은 여러명이지만, 항상 모두 같은 방에 있어야 한다. 즉, 여러 명이 다른 방에 있을 수는 없다. 어떤 방에서 이..
![[BOJ_14226] 이모티콘 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJ7jVE%2FbtruMpoTATc%2FgXAVMAKUWFBhsaZhEOo5s1%2Fimg.png)
[BOJ_14226] 이모티콘 (java)
문제링크 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제설명 더보기 더보기 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다..
![[BOJ_14226] 이모티콘 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLzT5T%2FbtruMph9Mcs%2FrpBze45yggGHPR5Kh4vNz0%2Fimg.png)
[BOJ_14226] 이모티콘 (java)
문제링크 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제설명 더보기 더보기 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다..

BFS로 최소비용 문제 해결하기
도입 BFS 알고리즘의 목적은 그래프에서 모든 정점을 한번씩만 확인하기 위한 것입니다. BFS가 너비우선탐색조건이라는 성질 때문에 몇가지 조건만 성립하면 최소비용 문제를 해결할 수 있습니다. BFS란? BFS 그래프 설명 참고하기 [Algorithm] 그래프란? 그래프 탐색알고리즘(DFS,BFS) 도입 그래프는 정점과 간선으로 구성되는 중요한 자료구조입니다. 이번 시간에는 그래프에 대한 용어와 그래프를 표현하는 방법 그리고 그래프를 탐색하는 알고리즘을 알아보겠습니다. 그래프 cnu-jinseop.tistory.com BFS는 그래프의 탐색에서 사용되는 알고리즘입니다. DFS와 동일하게 모든 정점을 한번씩만 확인할 때 사용합니다. BFS는 너비를 우선으로 탐색하는 기능을 수행하기 때문에 최소비용 문제를 해..
![[BOJ_7562] 나이트의 이동 (Java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFNxhN%2FbtruMoQ30PF%2FIyBNHxO0ZersO05Z3pMQv1%2Fimg.png)
[BOJ_7562] 나이트의 이동 (Java)
문제링크 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ ..
![[BOJ_7576] 토마토 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwfq5c%2FbtruLszoDVI%2FxOVp89GgOD3JKsc9TrgoUk%2Fimg.png)
[BOJ_7576] 토마토 (java)
문제링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제설명 더보기 더보기 더보기 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토..
![[BOJ_2667] 단지번호붙이기 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCcBUP%2Fbtrup9BAriT%2F18Ks0ZdCsaGPCeHrlcuiGk%2Fimg.png)
[BOJ_2667] 단지번호붙이기 (java)
문제링크 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제설명 더보기 더보기 더보기 더보기 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 ..
![[BOJ_1707] 이분그래프 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeafRDU%2FbtruITqLyzw%2F88PFU9tWtWsFLWl1eXZ30k%2Fimg.png)
[BOJ_1707] 이분그래프 (java)
문제링크 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 문제설명 더보기 더보기 문제 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스..

그래프란? 그래프 탐색알고리즘(DFS,BFS)
도입 그래프는 정점과 간선으로 구성되는 중요한 자료구조입니다. 이번 시간에는 그래프에 대한 용어와 그래프를 표현하는 방법 그리고 그래프를 탐색하는 알고리즘을 알아보겠습니다. 그래프란? 그래프는 정점과 간선으로 구성되는 자료구조입니다. 정점은 하나의 객체를 의미하며 Vertex혹은 노드라고 표현합니다. 간선은 정점과 정점을 이어주는 선을 의미합니다. 따라서 그래프를 구현하여 서로 연결되어있는 객체들의 관계를 표현해줄 수 있습니다. 위는 그래프의 예시입니다. A,B,C,D,E를 정점이라하며 각각을 연결하고 있는 선을 간선이라고 합니다. 그래프 용어 그래프의 용어를 정리하도록 하겠습니다. 정점 Vertex라고 하며 하나의 점을 의미합니다. 하나의 객체라고 생각하면 됩니다. 간선 edge라고 부르며 정점과 정점..