유기농 배추 시간 제한메모리 제출 정답 맞힌 사람 정답 비율 1 초 512 MB 95778 36797 24944 36.623% 문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서..
equals 메서드는 재정의하기 쉬워 보이지만, 실제로 재정의 할 때는 주의해야 할 점이 많다. 이 문제를 회피하려면 그냥 equals를 재정의하지 않으면 된다. 재정의하지 않고 그냥 둔다면, 해당 클래스의 인스턴스는 오직 자기 자신과만 같게 된다. 다음은 equals를 재정의하지 않는 것이 최선인 경우들이다. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스가 여기 해당한다. Thead가 좋은 예로, Object의 equals 메서드는 이러한 클래스에 딱 맞게 구현되었다. 인스턴스의 논리적 동치성(logical equality)을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다. 예를 들어 대부분의 Set 구현체는 Ab..
오늘 공부한 내용 이펙티브 자바 - 아이템 8 정리해서 포스팅, 아이템 9 공부 스프링 핵심 원리 고급편 - 프록시 팩토리 공부 백준 bfs/dfs 단지번호붙이기, 유기농 배추 풀기 자바의 정석 - 2.3 진법 정리해서 포스팅 동아리 소개 발표 준비 PPT 만들기 💭느낀 점 & 배운 점 finalizer와 cleaner를 가급적 피하라는데, 나는 이걸 오늘 처음 들어봤다... 가급적 쓰지 말라고 하는데 공부를 해야 하나 말아야 하나... 일단 필요할 때까지 미루도록 했담! ProxyFactory와 포인트컷, 어드바이스, 어드바이저를 공부했다. 처음 들었을 때는 그때 조금 심신미약 상태이기도 했고 그래서 하나도 안 들어오고 내가 뭘 하나 싶었는데, 이해되니까 기분이 너무 좋았다. 사실 진법 포스팅 하기도 ..
try-finally는 사용하는 자원이 많아질수록 코드가 지저분해진다. 이건 많이들 경험해 보았을 것이다. static String firsLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } } 위 코는 별로 나쁘지 않아보인다. 하지만 자원을 하나 더 쓴다면 어떨까? static void copy(String src, String dst) throws IOException { InputStream in = new FileInputStream(src); try{ Output..
자바에서는 객체 소멸자로 finalizer와 cleaner를 제공하지만, 모두 예측할 수 없고, 상황에 따라서는 위험할 수도 있다. (자바 9에서는 finalizer를 Deprecated로 정하고, 대안으로 cleaner를 냈지만, cleaner도 역시 예측할 수 없다.) finalizer와 cleaner 모두 즉시 실행된다는 보장이 없고. 언제 실행될지 알 수 있는 방법이 없기 때문에 finalizer와 cleaner로는 제때 실행되어야 하는 작업은 절대 할 수 없다. 즉 요약하자면, 상태를 영구적으로 수정하는 작업에서는 절때 finalizer와 cleaner에 의존해서는 안 된다는 것이다. 예를 들면 데이터베이스 같은 공유 자원의 영구 락(lock)의 해제를 finalizer와 cleaner에 맡겨 ..
단지번호붙이기 시간 제한메모리 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 105107 44299 27940 40.119% 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이..
오늘 공부한 내용 이펙티브 자바 - 아이템 6~7 정리해서 포스팅 백준 bfs/dfs 1문제 풀기 스프링 핵심 원리 고급편 - 동적 프록시 공부 오라클 데이터베이스 - 서브쿼리 공부 자바의 정석 - 배열 전까지 공부 💭느낀 점 & 배운 점 이펙티브 자바 아이템 7에서 조금 멘탈이 나갔다.. 너무 어려워서... 자바를 조금 더 공부하고 다시 공부해야 할 것 같다. 오라클 데이터베이스의 서브쿼리부터 남는 부분을 쭉 보았다. 사실 이건 지금 당장 내가 DB를 쓸 건 아니라 조금 더 늦게 봐도 될 거 같다. (테이블 생성하거나, 뭐 그런 등등..) 사실 나는 락이나, 트랜잭션, ACID등을 공부하고, 성능 최적화를 목표로 공부를 시작했는데, 아무래도 기본서다보니까 그런 내용들은 없는 것 같았다. 그래서 서브쿼리..
바이러스 시간 제한메모리 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 85616 40198 27360 45.504% 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨..