2021-01-16 이번에 TreeMap에 이어서 TreeSet에 대하여 알아보자. 마찬가지로 이진트리구조를 가지고 있는 컬렉션으로써, 이진트리 구조를 잘 모를 경우 전 글을 확인하자. seeminglyjs.tistory.com/227 사실 Set이라는 자료구조 특성상 Map보다는 훨씬 간단하기 떄문에 바로 코드로 알아보도록 하자. package tTreeSet; import java.util.TreeSet; public class main { public static void main(String[] args) { TreeSet tSet = new TreeSet(); tSet.add(10); tSet.add(20); tSet.add(30); tSet.add(40); tSet.add(50); } } 기존..
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-11 우선 Stream 은 자바의 배열 / 리스트 / 맵 등의 컬렉션의 데이터들을 하나씩 참조하여 람다식으로 처리할 수 있는 반복자이다. 기존 자바 7 이전의 반복자 Iterator보다 보다 코드량이 줄었으며, 람다식의 사용으로 간결하고 편리해졌다고 볼 수 있다. 이제 코드를 통해 어떤식으로 사용이 되는지 알아보자. package sStream; public class People { private String name; private int age; public People(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(..
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 ..