All
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft (Association of Construction Manager Craft)가 발매되었다. 이 게임은 지금까지 나온 게임들과는 다르게 ACM크래프트는 다이나믹한 게임 진행을 위해 건물을 짓는 순서가 정해져 있지 않다. 즉, 첫 번째 게임과 두 번째 게임이 건물을 짓는 순서가 다를 수도 있다. 매 게임시작 시 건물을 짓는 순서가 주어진다. 또한 모든 건물은 각각 건설을 시작하여 완성이 될 때까지 Delay가 존재한다. 위의 예시를 보자. 이번 게임에서는 다음과 같이 건설 순서 규칙이 주어졌다. 1번 건물의 건설이 완료된다면 2번과 3번의 건설을 시작할수 있다. (동시에 진행이 가능하다) 그리고 4번 건물을 짓기 위해..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다. 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000) 모든 숫자는 양의 정수이다. 출력 첫째 줄에 상덕이가 훔칠 수 있는 ..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 크기가 무한인 정사각형 모눈종이가 있다. 모눈종이의 각 정사각형은 행과 열의 쌍으로 표현할 수 있다. 이 모눈종이 전체를 양의 정수의 소용돌이 모양으로 채울 것이다. 일단 숫자 1을 0행 0열에 쓴다. 그리고 나서 0행 1열에 숫자 2를 쓴다. 거기서 부터 소용돌이는 반시계 방향으로 시작된다. 다음 숫자는 다음과 같이 채우면 된다. -3 -2 -1 0 1 2 3 -------------------- -3 |37 36 35 34 33 32 31 -2 |38 17 16 15 14 13 30 -1 |39 18 5 4 3 12 29 0 |40 19 6 1 2 11 28 1 |41 20 7 8 9 10 27 2 |42 21 22 23 24 25 26 3 |43 44 45 46 47 48 49이 문제는 위와 ..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5 6주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다. 지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사된다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사되며, ..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
문제 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음과 같이 작동한다. 현재 위치를 청소한다. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 왼쪽 방향에 청소..
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
배포 환경 AWS EC2 Ubuntu 16.04.6 AWS RDS MySql Spring Boot 2.2.9 Java 11 ( 해당 글은 EC2와 RDS를 사용해봤다는 전제하에 작성함. ) 1. DB 설정 JPA와 MySql을 사용하기 위한 의존성 추가 # build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compile 'mysql:mysql-connector-java' application.yml 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/{..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bxHrtG/btqHJpMaSHJ/wb6GiNmgzyhoLwwrx9k5yk/img.jpg)
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
모든 과목에 대한 보고서 앞서 RosterRepoter를 통해 과목을 신청한 학생들에 대한 보고서를 만들었다면 이번에는 모든 과목에 대한 보고서를 만들어본다. 우선, CourseReportTest를 만들어 보고서의 뼈대를 만들어준다. public class CourseReportTest extends TestCase { public void testReport() { final Date date = new Date(); CourseReport report = new CourseReport(); report.add(CourseSession.create("ENGL", "101", date)); report.add(CourseSession.create("CZEC", "200", date)); report.ad..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/reKXy/btqHAoy0Hi6/7WAYzAweZXBcEWKg6YPItk/img.jpg)
![](https://tistory1.daumcdn.net/tistory/3211355/skin/images/no-image.jpg)
클래스 메소드 객체는 동작(메소드)과 속성(필드)으로 이루어지며 객체가 유지되는 동안 속성은 유지된다. 또한 객체는 항상 인스턴스 변수의 산태로 표현 가능한 특정 상태를 가진다. 객체는 메소드는 크게 동작 메소드(객체의 상태를 변경), 질의 메소드(객체 상태의 일부를 반환)로 나뉠 수 있으며 이와 같이 메소드는 한가지의 일만 하도록 디자인하는 것이 좋다. 간혹 인수를 받아서 그 인수에 대해서만 연산을 하고 값을 반환하는 메소드가 필요한 경우가 있다. 이러한 메소드를 유틸리티 메소드라고 하며, 객체의 상태에는 영향을 주지 않는다. 다른 언어에서는 함수(function)이라고 불리며 어떤 클라이언트에서든지 호출이 가능하다. 예로들면 앞서 DateUtil을 들 수 있다. 원래 코드와 아래 코드를 비교해보자. ..