IT/Effective Java

[Effective Java 3/E] ITEM 34. int 상수 대신 열거 타입을 사용하라

열거(이하 Enum) 타입이 도입되기 전에는 상수를 정의할 때에는 정수 열거 패턴(int enum pattern)을 사용했다. //DO NOT public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; 쓰지 말아야 할 이유 이 정수 열거 패턴은 type safe를 보장할 수 없다.(APPLE_FUJI==ORAN..

2021.03.28 게시됨

IT/Algorithm

[BOJ 9375] 패션왕 신해빈

서론 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 어려운 문제는 아니었지만 갯수를 세는 아이디어가 괜찮아서 올려봅니다. 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 ..

2021.03.04 게시됨

IT/Algorithm

[BOJ 1092] 배

서론 그리디 문제가 너무 재밌습니다. 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제 지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다. 각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다..

2021.03.04 게시됨

IT/Algorithm

[BOJ 17839] Baba is Rabbit

서론 사랑하는 나의 모교 UNIST에서 개최한 첫 알고리즘 대회의 문제다. 나는 2회 대회에 참가했는데, 알고리즘 준비가 전혀 안되어 있던 상태였기 때문에 허겁지겁 1회 대회 문제를 풀어보았던 기억이 있는데... 그 때는 이 문제조차 어렵게 느껴졌는데 2달 정도 공부하고 나서는 편하게 느껴졌다. 전형적인 solved.ac 실버 수준의 그래프 탐색 문제로, 이 문제를 잘 풀수 있다면 대다수의 실버 그래프 탐색 문제는 풀 수가 있을 것이다. 17839번: Baba is Rabbit Baba에 명령을 한 번 이상 적용한 결과로 나올 수 있는 사물을 사전순으로 출력한다. 단, 적용할 수 있는 명령이 없다면, 아무것도 출력하지 않는다. www.acmicpc.net 문제 원이는 요즘 유행하는 게임을 하고 있다. 이..

2021.03.04 게시됨

카테고리 없음

본 블로그를 만들면서 참고한 링크

Syntax Highlighter 티스토리 코드블럭용 Syntaxhighlighter 수정버전 (뉴에디터의 코드블럭 및 기존 Syntaxhighlighter 태그 2020-05-06 update log: Syntaxhighlighter의 부가 기능을 사용할 수 없었던 문제가 있어서 Syntaxhighlighter_For_Tistory.zip 안에 들어있는 파일중 shCoreForTistory.js파일 수정하였습니다. 2010-05-03 update.. kwonkyo.tistory.com 티스토리 무료 반응형 스킨 티스토리 블로그 반응형 무료 스킨 배포 :: 베이스캠프 (나눔, 추천) 업데이트 히스토리 Releases · ruden91/public-basecamp-skin 티스토리 무료 반응형 스킨 :: ..

2021.03.01 게시됨

IT/Effective Java

[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가 성립할 ..

2021.02.28 게시됨

 포스팅 썸네일 이미지

IT/Algorithm

[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..

2021.02.24 게시됨

IT/Algorithm

[BJ 18768] 팀 배정

서론 최근에 그리디 알고리즘 문제를 집중적으로 풀어보고 있습니다. 그리디 알고리즘을 사용하는 문제라고 파악이 되면, 어떤 기준을 가지고 최적의 선택을 해야할지 고민해 보아야 합니다. 이 문제는 쉽게 풀 수 있을 것 처럼 보이는 문제지만 기준을 정교하게 세워야 통과할 수 있는 문제입니다. www.acmicpc.net/problem/18768 18768번: 팀 배정 각 테스트 케이스 마다 능력치 합의 최댓값을 한 줄에 하나씩 출력한다. www.acmicpc.net [팀 배정] 문제 사내 해커톤 대회에서 팀 배틀 보안 해커톤을 하기로 했다. 대회는 주어진 보안 서버를 공격(해킹)하는 역할의 팀 A와 방어(보안)하는 역할의 팀 B로 나누어서 진행한다. 참가자는 총 n명이고, 각 참가자의 공격 능력과 방어 능력은..

2021.02.23 게시됨

IT/Effective Java

[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 생성자와 다르게 이름을 가질 수 있다. 생성자의 파라미터로는 반환될 객체의 특성을 코드 작성자가 알기 힘들다. 그러나 정적 팩터리 메서드는 이름을 잘 지어놓으면 코드를 읽는 사람이 반환될 객체의 특성을 쉽게 이해할 수 있다. ..

2021.02.22 게시됨

IT/Effective Java

[Effective Java 3/E] 1장 들어가기

책을 관통하는 키워드 - Clarity(명료성) Simplicity(단순성) Component는 사용자를 놀래게 하는 동작을 해서는 안된다. Component는 가능한 한 작되, 너무 작아서도 안된다. 코드는 복사되는 게 아니라 재사용되어야 한다. Component 사이의 의존성은 최소로 유지해야한다. 오류는 만들어지자 마자 가능한 빨리(물론 Compile 타임에 잡는게 베스트!) 잡아야 한다. 규칙을 어길 때는 합당한 이유가 있어야 한다. 단어정리 Component : method부터 framework까지 재사용 가능한 모든 소프트웨어 요소 Java의 자료형은 Interface(+annotation), Class(+enum), Array, Primitive Class의 멤버들은 Field, Method..

2021.02.22 게시됨