14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 문제 상황 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 방은 $N \times M$ 크기의 직사각형으로 나타낼 수 있으며, $1 \times 1$ 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이다. 방의 각 칸은 좌표 $(r, c)$로 나타낼 수 ..
1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 상황 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 ..
가비지 컬렉션(Garbage Collection)이란? 자바의 메모리 관리 방법 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스 C언어는 free()라는 함수를 통해 직접 메모리를 해제해주어야 하지만 자바는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. 장점 메모리 누수 방지 해제된 메모리에 접근 방지 해제한 메모리를 또 해제하는 이중 해제 방지 단점 개발자가 메모리가 언제 해제되는지 정확하게 알 수 없다. 가비지 컬렉션(GC)이 동작하는 동안에는 다른 동작을 멈추기 때문에 오버헤드가 발생한다. Stop-The-World(STW) : GC를 수행하기 위해 JVM이 프로그램 실행을 멈추는 현상 이로 인해 GC가 너무 자주..
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고 자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA product.kyobobook.co.kr 6장 - 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때 고려해야 할 것 : 다중성, 방향, 연관관계의 주인 가능한 모든 연관관계 다대일 : 단방향, 양방향 일대다 : 단방향, 양방향 일대일 : 주 테이블 단방향, 양방향 일대일 : 대상 테이블 단방향, 양방향 다대다 : 단방향, 양방향 1. 다대일 다대일 관계와 일대다 관계는 항상 반대 방향 외래키는 항상 다 쪽에 있고, 따라서 객체 양방향 ..
11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 문제 상황 접근법 일정한 범위 안에서 최솟값 찾기 슬라이딩 윈도우와 정렬을 사용해야함 일반적인 정렬을 사용하면 시간초과가 나기 때문에 슬라이딩 윈도우를 덱으로 구현하면 정렬 효과를 볼 수 있음 덱에 새 값이 저장될 때 덱의 가장 뒤의 값이 저장하려는 값보다 크면 제거함 제거가 끝난 후 최솟값을 출력 문제 풀이 import java.io.BufferedReader; import java.io.IOException; import jav..