2021-01-15 문제 목장 주인인 상배는 양과 염소들을 같이 기르고 있다. 기르는 양과 염소는 각각 한 마리 이상이다. 양과 염소는 같은 사료를 먹고, 양 한 마리는 하루에 사료를 정확히 a 그램 먹고, 염소 한 마리는 하루에 정확히 b 그램을 먹는다고 한다. 상배는 매일 아침 양과 염소가 각각 몇 마리인지를 확인하는 작업을 한다. 양과 염소가 각각 몇 마리인지 확인할 때, 양과 염소들이 돌아 다녀서 정확하게 그 수를 구하는 것이 쉽지 않았다. 대신에 양과 염소가 전체 몇 마리인지를 확인하고, 또 양과 염소가 어제 하루 동안 소비한 전체 사료의 양만 확인해서 양과 염소가 각각 몇 마리 인지를 알려고 한다. 상배가 확인한 양과 염소 전체가 n마리이고, 어제 하루 동안 소비한 전체 사료의 양이 w그램일 ..
2021-01-14 TreeMap에서는 Tree라는 개념이 중요하다. 이는 이진트리 구조를 뜻하는데, 아래 보이는 노드들이 바로 이진트리 형태의 구조이다. 맨 위의 시작 노드를 보통 루트(root)라고 불리며, 나머지는 n개의 자식 노드들로 구성되어 있다. (하위 노드 위에 루트 노드를 제외한 인접한 상위 노드가 있다면 그 상위 노드를 부모 노드라고 부르기도 한다.) 해당 구조를 자세히 보면 같은 자식이라도 왼쪽은 작은 자식 오른쪽은 큰 자식이라고 된 것을 볼 수 있는데, 이는 마찬가지로 아래 이진트리를 보면 이해가 쉬울 것이다. 부모(상위) 노드를 기준으로 큰 값은 우측 작은 값은 좌측에 저장된다. 자 이제 tree 구조 설명을 됐으니 TreeMap을 살펴보자. TreeMap의 가장 큰 장점은 객체를 ..
2021-01-13 자바의 상속관계를 구현하는 과정 중 자식 클래스의 생성자에서 컴파일 오류가 발생하는 것을 간혹 목격할 수 있는데, 이와 같은 오류를 해결하는 방법을 알아보자. 우선 아래는 예제로 사용될 부모 클래스이다. package eException2; public class Parent { String name; int age; public Parent(String name, int age) { this.name = name; this.age = age; } } 이후 자식 클래스에서 성별이라는 필드를 추가해 새로운 생성자를 만들 예정이다. 하지만 위와 같이 생성자에서 컴파일 오류가 발생하게 된다. 분명 extends로 Parent를 물려받아 필드 name / age를 사용할 수 있는데, 실제 코..
2021-01-10 문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 4x개 만큼 가져갈 수 있다. 즉, 가능한 개수는 1, 4, 16, 64, ...개 이다. 4x개만큼 돌을 가져갈 수 있는 방법이 없는 사람이 게임을 지게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000) 출력 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. import java.util.Scanner; public class TemplateA { public static ..
2021-01-08 데몬스레드는 쉽게 말해서 주스레드의 하위 스레드라고 할 수 있다. 즉 주스레드의 보조적인 역할을 수행하게 되며, 주스레드가 종료될 경우 데몬스레드도 같이 종료되게 된다. 바로 코드로 살펴보도록 하자. 우선 Thread를 상속받는 두개의 클래스를 만들어 주었으며, 내용은 아래와 같다. package Demon; public class Thread1 extends Thread { @Override public void run() { while(true) { System.out.println("Thread1 is Running . . ."); } } } package Demon; public class Thread2 extends Thread { @Override public void ru..
2021-01-07 문제 ACM-ICPC 대회의 대회장은 R행 C열의 직사각형 형태로 좌석이 배치되어 있다. 대회가 시작하기 전에는 참가자들이 아무것도 만지면 안 되기 때문에 진행자는 'Do not touch ANYTHING!!!'을 연신 외친다. 하지만, 진행자가 성대결절에 걸리면서 'Do not touch ANYTHING!!!'을 외칠 수 없는 처지가 되었다. 따라서 주최측은 CCTV를 설치하여 참가자들을 감시하려고 한다. 이때, 각 CCTV는 N행 N열의 직사각형 영역의 좌석을 촬영할 수 있다. 모든 좌석을 전부 촬영하도록 CCTV를 배치할 때, 최소 몇 개의 CCTV가 필요할까? 입력 첫 번째 줄에 좌석의 세로 크기, 가로 크기 R, C와 한 대의 CCTV가 수용할 수 있는 범위 N이 주어진다. ..