코딩 6

백준 4673번 셀프 넘버

1 ~ 10000까지의 숫자중에 셀프 넘버가 아닌 데이터를 noSelfNumber에 집어넣고 loop를 순회하면서 selfNumber 여부를 체크하면 된다. 간단한 문제이다. https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다..

JAVA/알고리즘 2019.06.14

DFS로 미로 탈출하기

최단거리 알고리즘을 공부하면서 예전해 만들었었던 미로 찾기를 다시한번 해봤다. 초년생때 이런문제가 어려웠는데 다시해보니 크게 어렵지는 않은것 같다. DTO package dto; /** * Maze 블록의 정보를 보관하는 DTO * * @author rokki * */ public class MazeBlock { private int x; // x 좌표 private int y; // y 좌표 private int count; // 카운트 public MazeBlock(int x, int y, int count) { this.x = x; this.y = y; this.count = count; } public int getX() { return x; } public void setX(int x) { th..

JAVA/알고리즘 2019.05.06

백준 4936 - 섬의개수

결국은 순회하면서 하는 DFS를 했는데 다음번에는 DP 또는 그래프 문제를 좀 많이 풀어 보고 싶다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126import java.util.*; public class Main { public static void main(String[..

JAVA/알고리즘 2018.10.06

피터 코드의 상속 규칙

상속의 오용을 막기위해 상속의 사용을 엄격하게 제한한다. 하위에 존재하는 규칙중 하나라도 만족하지 못한다면 상속을 하지 않아야한다. 1. 자식 클래스와 부모 클래스 사이의 '역할 수행' 관계가 아니어야 한다. -> 요리사는 사람이라는 범주를 상속해서는 안된다. -> 요리사라는 것은 사람이라는 속성의 하나이다. 2. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 없어야 한다. -> 엄마라는 객체는 누군가의 딸이라는 객체가 될 수 있다. -> 이런 속성 변경이 잦을 경우에는 객체의 변환 작업이 필요해서 해서는 안된다. 3. 자식클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다. 4. 자식클래스가 단진 부모클래스의 일부 클래스의 기능을 재사용하기 위한 역할로 클래..

규칙 56 - 일반적으로 통용되는 작명 관습을 따르라

자바의 작명관습은 두 가지 범주로 나눌 수 있다. 철자. -> 패키지, 클래스, 인터페이스, 메서드, 필드 그리고 자료형 변수에 관한 것 -> 아주 그럴듯한 이유가 없이 이 규칙을 어겨서는 안 된다. 1). 패키지 -> 마침표를 구분점으로 사용하는 계층적 이름 이어야 한다. -> 각각의 컴포넌트는 알파벳 소문자로 구성하고, 숫자는 거의 사용하면 안된다. -> 패키지 시작은 회사 조직의 도메인으로 시작한다. com.wedul -> 패키지명 컴포넌트는 짧아야 하며, 8자리 이하여야 한다. -> 약어를 사용하여 의미를 충분히 전달할 수 있어야한다. 2). 클래스, 인터페이스, Enum -> 하나이상의 단어로 구성된다. -> 각 첫 글자는 대문자로 시작해야 하며 널리 사용 되는 약어를 제외하고는 약어를 사용해서..

JAVA/Effective Java 2018.05.29

규칙 47어떤 라이브러리가 있는지 파악하고 적절히 활용하라

기존의 개발자들이 0부터 제한된 난수의 값을 만들라고 하는 경우에 다음의 코드를 사용하는 경우가 많다. 1234private status final Random rnd = new Random();static int random(int n) { return Math.abs(rnd.nextInt()) % n;}Colored by Color Scriptercs 위의 코드는 동일한 숫자를 뱉어내는 경우와 범위 이상에 데이터를 뱉어내기도 한다. 이는 다행 스럽게도 Random.nextInt(int) 플랫폼 라이브러리를 이용하여 해결할 수 있다. 이런 라이브러리에 내부 구현 동작을 모두 알면 좋지만, 모두 해석해서 사용하기에는 어려움이 있다. 만들어져 있는 라이브러리만 정상적으로 잘 사용한다면 시간을 낭비하지 않고..

JAVA/Effective Java 2018.05.29