[BOJ 1092] 배 서론 그리디 문제가 너무 재밌습니다. 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제 지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다. 각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다..
[BOJ 17839] Baba is Rabbit 서론 사랑하는 나의 모교 UNIST에서 개최한 첫 알고리즘 대회의 문제다. 나는 2회 대회에 참가했는데, 알고리즘 준비가 전혀 안되어 있던 상태였기 때문에 허겁지겁 1회 대회 문제를 풀어보았던 기억이 있는데... 그 때는 이 문제조차 어렵게 느껴졌는데 2달 정도 공부하고 나서는 편하게 느껴졌다. 전형적인 solved.ac 실버 수준의 그래프 탐색 문제로, 이 문제를 잘 풀수 있다면 대다수의 실버 그래프 탐색 문제는 풀 수가 있을 것이다. 17839번: Baba is Rabbit Baba에 명령을 한 번 이상 적용한 결과로 나올 수 있는 사물을 사전순으로 출력한다. 단, 적용할 수 있는 명령이 없다면, 아무것도 출력하지 않는다. www.acmicpc.net 문제 원이는 요즘 유행하는 게임을 하고 있다. 이..
[Effective Java 3/E] 3장 모든 객체의 공통 메서드 ITEM 10. equals는 일반 규약을 지켜 재정의 하라 기본 object를 상속하고 equals를 override 하지 않은 경우에는, Object의 equals를 상속하고 객체 식별성을 기준으로 판단한다. String s1 = new String("a"); String s2 = new String("a"); s1 == s2; // false. 두 객체는 같은 "a"라는 문자열을 담고 있는 클래스지만 // 각각 다른 인스턴스다. s1.equals(s2); // true. 다른 객체지만 의미가 같으므로 논리적 동치성. 아래 규칙 중 단 하나라도 만족하면 재정의 하지 않도록 하자. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 게 아닌 동작하는 개체를 표현한다. thread는 equals가 성립할 ..
썸네일 [BJ 3344] N-Queens 서론 3344번: N-Queen 첫째 줄에 N이 주어진다. N은 8, 26, 213, 2012, 99991, 99999중 하나이다. www.acmicpc.net N-Queens의 매운 맛 문제가 있길래 시도해봤는데 시간초과로 박살이 났다. 인풋으로 99999가 들어가는데 시간 초과가 나는건 자명했는데 아무 생각없이 정답률을 까먹었다. 대체 어떻게 푸는건가 싶어서 구글링해봤는데, 이 문제에만 특별히 적용되는 알고리즘이 있었다. 태그에 백트래킹이 붙어있지 않을 때 알아봤었어야 했는데... Eight queens puzzle - Wikipedia The eight queens puzzle is the problem of placing eight chess queens on an 8×8 chessboard so..
[BJ 18768] 팀 배정 서론 최근에 그리디 알고리즘 문제를 집중적으로 풀어보고 있습니다. 그리디 알고리즘을 사용하는 문제라고 파악이 되면, 어떤 기준을 가지고 최적의 선택을 해야할지 고민해 보아야 합니다. 이 문제는 쉽게 풀 수 있을 것 처럼 보이는 문제지만 기준을 정교하게 세워야 통과할 수 있는 문제입니다. www.acmicpc.net/problem/18768 18768번: 팀 배정 각 테스트 케이스 마다 능력치 합의 최댓값을 한 줄에 하나씩 출력한다. www.acmicpc.net [팀 배정] 문제 사내 해커톤 대회에서 팀 배틀 보안 해커톤을 하기로 했다. 대회는 주어진 보안 서버를 공격(해킹)하는 역할의 팀 A와 방어(보안)하는 역할의 팀 B로 나누어서 진행한다. 참가자는 총 n명이고, 각 참가자의 공격 능력과 방어 능력은..
[Effective Java 3/E] 2장 객체 생성과 파괴 ITEM 1 Consider Static Factory Methods Static factory method(정적 팩터리 메서드) 생성자 없이 메서드를 통해 객체를 생성하는 것 ! : 디자인 패턴에서 일치하는 패턴은 없다. 책의 고유한 패턴. //example : valueOf in Boolean box class public static Boolean valueOf(boolean b){ return b ? Boolea.TRUE : Boolean.FALSE; } Advantages 생성자와 다르게 이름을 가질 수 있다. 생성자의 파라미터로는 반환될 객체의 특성을 코드 작성자가 알기 힘들다. 그러나 정적 팩터리 메서드는 이름을 잘 지어놓으면 코드를 읽는 사람이 반환될 객체의 특성을 쉽게 이해할 수 있다. ..
[Effective Java 3/E] 1장 들어가기 책을 관통하는 키워드 - Clarity(명료성) Simplicity(단순성) Component는 사용자를 놀래게 하는 동작을 해서는 안된다. Component는 가능한 한 작되, 너무 작아서도 안된다. 코드는 복사되는 게 아니라 재사용되어야 한다. Component 사이의 의존성은 최소로 유지해야한다. 오류는 만들어지자 마자 가능한 빨리(물론 Compile 타임에 잡는게 베스트!) 잡아야 한다. 규칙을 어길 때는 합당한 이유가 있어야 한다. 단어정리 Component : method부터 framework까지 재사용 가능한 모든 소프트웨어 요소 Java의 자료형은 Interface(+annotation), Class(+enum), Array, Primitive Class의 멤버들은 Field, Method..
[BOJ 1256] 사전 (풀이 미완성, DP사용 X) 서론 DP 태그가 떡하니 붙어있는데 DP 복습을 안하고 풀어서 DP로 풀 아이디어가 없었다. 대신에 수학적인 개념을 이용해 풀어보았다. 설명이 잘 될진 모르겠다. 거지같은 코드에 괴상한 아이디어다. 2 2 x 케이스 a는 0으로, z는 1로 보기로 했다. 그래서 a와 z의 갯수를 충족하는 이진수를 작은 순부터 나열하기로 했다. 0011 // index = 0 0101 0110 1001 1010 1100 // index = 5 처음 나오는 1의 위치를 x라고 두면, 기준으로 0을 배열할 수 있는 경우의 수가 2C0이다. 0
썸네일 [BOJ 3078] 좋은 친구 문제 3078번: 좋은 친구 첫째 줄에 N과 K가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ K ≤ N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다. www.acmicpc.net [좋은 친구] 상근이는 환갑을 바라보던 나이에 수능 시험을 다시보고 교대에 입학했고, 초등학교 선생님으로 취직했다. 상근: 요즘 애들은 친구를 사귀지 않나봐. 내가 앞에서 보고 있으면, 친구가 있는 학생이 별로 없는 것 같아. ??: 오빠! 오빠는 말콤의 친구와 성적이라는 책 안 읽어 봤어? 이 책에는 성적과 친구가 무슨 관계가 있는지 나와. 요즘 애들은 친구를 사귀기 전에 먼저 그 친구의 반 등수를 살펴봐. 말콤은 이 연구를 하기 위해..
[BOJ 4884] FIFA 월드컵 서론 백준 4884번 FIFA 월드컵은 solved.ac 기준 Bronze 1 문제임에도 불구하고, 정답자가 30%밖에 되지 않습니다. 문제 자체의 난이도는 높지 않으나, 간과하기 쉬운 부분이 있어서 많이 틀리지 않았을까 생각합니다. 4884번: FIFA 월드컵 FIFA는 월드컵의 대회 형식을 약간 수정하려고 한다. 현재, 월드컵은 32개팀이 참가하며, 2개의 라운드로 이루어져 있다. 첫 번째 라운드는 조별 리그이고, 32개팀은 8개의 조에 배정된다. 각 팀은 www.acmicpc.net [FIFA 월드컵 문제] FIFA는 월드컵의 대회 형식을 약간 수정하려고 한다. 현재, 월드컵은 32개팀이 참가하며, 2개의 라운드로 이루어져 있다. 첫 번째 라운드는 조별 리그이고, 32개팀은 8개의 조에 배정된다. ..