자바공부
-
2021-02-25 - 정의 모든 출력 스트림의 최상위 클래스로 모든 바이트 기반의 입력 스트림은 OutputStream을 상속받아 사용한다. 자바 API에서의 정의는 아래와 같다. This abstract class is the superclass of all classes representing an output stream of bytes. An output stream accepts output bytes and sends them to some sink. Applications that need to define a subclass of OutputStream must always provide at least a method that writes one byte of output. 이 추상 클..
[Java] Class OutputStream 입력 스트림 클래스 알아보기.2021-02-25 - 정의 모든 출력 스트림의 최상위 클래스로 모든 바이트 기반의 입력 스트림은 OutputStream을 상속받아 사용한다. 자바 API에서의 정의는 아래와 같다. This abstract class is the superclass of all classes representing an output stream of bytes. An output stream accepts output bytes and sends them to some sink. Applications that need to define a subclass of OutputStream must always provide at least a method that writes one byte of output. 이 추상 클..
2021.02.25 -
2021-02-10 여러 개의 스레드를 사용하다 보면, 스레드 간의 이름이 혼동되는 상황이 발생할 수 있다. 이 경우를 대비하여 스레드 간의 이름을 설정하는 방법이 존재하는데 오늘은 이와 같은 방법을 알아보자. 예제 스레드 2개 package Thread; public class Thread_A extends Thread{ public Thread_A() { setName("Thread_A"); } @Override public void run() { for(int i = 0; i < 5; i++) { System.out.println("상속받은 Thread_A 클래스가 실행 중 입니다."); } } } 스레드는 총 2가지 스레드를 사용할 것이다. 하나는 클래스에서 Thread를 상속받아 구현한 스레드(..
[Java] Thread 이름 설정하는 방법 알아보기.2021-02-10 여러 개의 스레드를 사용하다 보면, 스레드 간의 이름이 혼동되는 상황이 발생할 수 있다. 이 경우를 대비하여 스레드 간의 이름을 설정하는 방법이 존재하는데 오늘은 이와 같은 방법을 알아보자. 예제 스레드 2개 package Thread; public class Thread_A extends Thread{ public Thread_A() { setName("Thread_A"); } @Override public void run() { for(int i = 0; i < 5; i++) { System.out.println("상속받은 Thread_A 클래스가 실행 중 입니다."); } } } 스레드는 총 2가지 스레드를 사용할 것이다. 하나는 클래스에서 Thread를 상속받아 구현한 스레드(..
2021.02.10 -
2021-02-08 문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. 출력 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. Source Code import java.util.Scanner; public class TemplateA { public static void main(String[] args){ Scanner scan = new Scanner(System.in); int ..
백준 BaekJoon 4153번: 직각삼각형 [Java]2021-02-08 문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. 출력 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. Source Code import java.util.Scanner; public class TemplateA { public static void main(String[] args){ Scanner scan = new Scanner(System.in); int ..
2021.02.08 -
2021-02-07 자바에는 열거형이라는 enum이라는 것이 있다. 이는 자바의 3 요소로 불리기도 한다. ( class / Interface / enum) 오늘은 이 enum을 만드는 방법을 간단히 알아보도록 하자. (기준은 eclipse로 설명하겠다.) enum 만들기 만드는 방법은 간단하다. 기존의 class와 interface를 만들듯이 package 우클릭 - > new -> enum을 클릭해 생성하면 된다. 그러면 이제 아래와 같은 창이 뜨게되는데, 웬만해서는 그냥 default로 두고 Name만 설정해 준 뒤, Finish 버튼을 눌러 주면 된다. enum 선언하기 사실 모양은 class와 interface와는 다른 점이 없다. 다만 enum의 주요목적은 상직적인 의미를 가지는 상수를 선언해..
[Java] enum 열거형(타입) 생성과 사용법 알아보기.2021-02-07 자바에는 열거형이라는 enum이라는 것이 있다. 이는 자바의 3 요소로 불리기도 한다. ( class / Interface / enum) 오늘은 이 enum을 만드는 방법을 간단히 알아보도록 하자. (기준은 eclipse로 설명하겠다.) enum 만들기 만드는 방법은 간단하다. 기존의 class와 interface를 만들듯이 package 우클릭 - > new -> enum을 클릭해 생성하면 된다. 그러면 이제 아래와 같은 창이 뜨게되는데, 웬만해서는 그냥 default로 두고 Name만 설정해 준 뒤, Finish 버튼을 눌러 주면 된다. enum 선언하기 사실 모양은 class와 interface와는 다른 점이 없다. 다만 enum의 주요목적은 상직적인 의미를 가지는 상수를 선언해..
2021.02.07 -
2021-02-03 자바에서 배열 사용간 배열 내부의 데이터들의 중복된 값을 제거하고 싶을 수가 있다. 이러한 경우에서의 해결방법을 알아보자. 1. Set 컬렉션 사용 package ArraysOverlap; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.stream.Stream; public class main { public static void main(String[] args) { //방법 1. int [] arr = {1,1,1,2,3,4,5,5,5,6,7}; //중복된 값을 다수 가지는 int 배열 선언 Set set = new HashSet(); // set의 자료 구조를 사..
[Java] 자바 배열 중복값(Overlap) 제거 / 처리/ 방법 알아보기.2021-02-03 자바에서 배열 사용간 배열 내부의 데이터들의 중복된 값을 제거하고 싶을 수가 있다. 이러한 경우에서의 해결방법을 알아보자. 1. Set 컬렉션 사용 package ArraysOverlap; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.stream.Stream; public class main { public static void main(String[] args) { //방법 1. int [] arr = {1,1,1,2,3,4,5,5,5,6,7}; //중복된 값을 다수 가지는 int 배열 선언 Set set = new HashSet(); // set의 자료 구조를 사..
2021.02.03 -
2021-01-24 간혹 문자열에 불필요한 공백이 들어가는 경우가 있는데 이와 같은 경우는 어떻게 처리할까? 물론 변수에 다시 데이터를 입력해주는 방법도 있겠지만, 문자열 데이터가 긴 경우에는 해당 작업이 귀찮아질 수가 있다. 이를 위해서 String에서는 trim이라는 메서드를 제공하는데, 이와 같은 메서드를 사용하는 방법을 알아보자. package String_trim; public class main { public static void main(String[] args) { //문자열의 불필요한 공백을 제거하는 메서드를 알아보자. String a = " Hi Hi Hi!"; String b = "Hi Hi Hi! "; String c = " 안녕하세요 ~! "; // 각 변수별 a는 앞에 불필요한..
[Java] 자바 String 문자열 불필요한 공백 제거하는 법 trim();2021-01-24 간혹 문자열에 불필요한 공백이 들어가는 경우가 있는데 이와 같은 경우는 어떻게 처리할까? 물론 변수에 다시 데이터를 입력해주는 방법도 있겠지만, 문자열 데이터가 긴 경우에는 해당 작업이 귀찮아질 수가 있다. 이를 위해서 String에서는 trim이라는 메서드를 제공하는데, 이와 같은 메서드를 사용하는 방법을 알아보자. package String_trim; public class main { public static void main(String[] args) { //문자열의 불필요한 공백을 제거하는 메서드를 알아보자. String a = " Hi Hi Hi!"; String b = "Hi Hi Hi! "; String c = " 안녕하세요 ~! "; // 각 변수별 a는 앞에 불필요한..
2021.01.24 -
2021-01-19 기존에 변수나 배열과 같은 경우에는 새로운 객체를 만들어서 복사를 진행하면 된다. 그러면 클래스를 복사해서 사용하고자 하면 어떻게 해야 할까? ctrl + c -> ctrl + v를 사용해서 새로운 클래스를 만들어 사용하면 될까?라고 생각할 수 도 있지만 자바 자체에서 이와 같은 고민을 해결해주기 위해 Cloneable이라는 인터페이스를 제공한다. 즉 복사를 하고자 하는 클래스에 implements Cloneable를 붙여주면 이와 같은 클래스를 사용할 수 있다. 바로 코드를 살펴보자. package tThinClone.copy; import java.util.Arrays; public class People implements Cloneable { String name; int ag..
[Java] 자바 ThinClone을 통해서 클래스를 복사해보자!2021-01-19 기존에 변수나 배열과 같은 경우에는 새로운 객체를 만들어서 복사를 진행하면 된다. 그러면 클래스를 복사해서 사용하고자 하면 어떻게 해야 할까? ctrl + c -> ctrl + v를 사용해서 새로운 클래스를 만들어 사용하면 될까?라고 생각할 수 도 있지만 자바 자체에서 이와 같은 고민을 해결해주기 위해 Cloneable이라는 인터페이스를 제공한다. 즉 복사를 하고자 하는 클래스에 implements Cloneable를 붙여주면 이와 같은 클래스를 사용할 수 있다. 바로 코드를 살펴보자. package tThinClone.copy; import java.util.Arrays; public class People implements Cloneable { String name; int ag..
2021.01.19 -
2020-12-12 자바의 특징 중 하나는 자동으로 참조하지 않는 배열이나 객체를 Garbage Collector를 사용해 힙 영역에서 제거시킨다. 이러한 기능을 수행하는 메서드가 바로 finalize()이다. 자동으로 실행되는 해당 메서드를 사용자가 원할 경우 직접 오버 라이딩하여 사용할 수 있는데, 이와 같은 방법을 알아보도록 하자. package Finalize; public class check { private int checkNum; public check(int checkNum) { this.checkNum =checkNum; } @Override protected void finalize() throws Throwable { System.out.println(checkNum + "에 있는 ..
[Java] 자바 finalize() 소멸자 메서드 알아보자!2020-12-12 자바의 특징 중 하나는 자동으로 참조하지 않는 배열이나 객체를 Garbage Collector를 사용해 힙 영역에서 제거시킨다. 이러한 기능을 수행하는 메서드가 바로 finalize()이다. 자동으로 실행되는 해당 메서드를 사용자가 원할 경우 직접 오버 라이딩하여 사용할 수 있는데, 이와 같은 방법을 알아보도록 하자. package Finalize; public class check { private int checkNum; public check(int checkNum) { this.checkNum =checkNum; } @Override protected void finalize() throws Throwable { System.out.println(checkNum + "에 있는 ..
2020.12.12 -
2020-12-11 toString 메서드는 Object 클래스에 속해있는 메서드이다. 기능으로는 객체의 문자정보를 "Class(이름)@16진수의 해시 코드"로 Console 창에 출력하는 기능을 가지고 있다. 위의 코드는 단순하게 Object 객체를 하나 만들고 해당 객체를 toString 메서드로 출력하는 코드로 위와 같은 결과를 얻을 수 있다. 보통은 Object 자체의 메서드로는 활용하지 않고 Date 와 같은 현재의 날짜 정보를 출력할 때나 아니면, 별개의 클래스에 Override(재정의)하여 사용하곤 한다. 아래는 구체적인 예이다. 위는 Date 타입의 객체를 생성한 후 기존에 Object 클래스와 마찬가지로 출력해보았다. 결과적으로 현재의 날짜와 시간이 정상적으로 출력되는 것을 확인할 수 있..
[Java] 자바 toString() 투스트링 문자 리턴 메서드 알아보자!2020-12-11 toString 메서드는 Object 클래스에 속해있는 메서드이다. 기능으로는 객체의 문자정보를 "Class(이름)@16진수의 해시 코드"로 Console 창에 출력하는 기능을 가지고 있다. 위의 코드는 단순하게 Object 객체를 하나 만들고 해당 객체를 toString 메서드로 출력하는 코드로 위와 같은 결과를 얻을 수 있다. 보통은 Object 자체의 메서드로는 활용하지 않고 Date 와 같은 현재의 날짜 정보를 출력할 때나 아니면, 별개의 클래스에 Override(재정의)하여 사용하곤 한다. 아래는 구체적인 예이다. 위는 Date 타입의 객체를 생성한 후 기존에 Object 클래스와 마찬가지로 출력해보았다. 결과적으로 현재의 날짜와 시간이 정상적으로 출력되는 것을 확인할 수 있..
2020.12.11 -
2020-12-05 와일드카드는 제네릭 타입을 매개 값이나 리턴 타입으로 사용할 때 구체적인 타입 대신에 사용하는 것으로 코드에서는?로 표현된다. 사용법은 3가지로 나누어 지며, 아래와 같다. 1. 제네릭타입 : 모든 클래스 / 인터페이스 타입이 올 수 있다. 2. 제네릭타입
[Java] 자바 제네릭(Generic) 와일드 카드 타입 정리2020-12-05 와일드카드는 제네릭 타입을 매개 값이나 리턴 타입으로 사용할 때 구체적인 타입 대신에 사용하는 것으로 코드에서는?로 표현된다. 사용법은 3가지로 나누어 지며, 아래와 같다. 1. 제네릭타입 : 모든 클래스 / 인터페이스 타입이 올 수 있다. 2. 제네릭타입
2020.12.05 -
2020-11-29 문제 창영 마을의 우체부, 우유배달원, 신문배달원은 상근이네 집에 가는 것을 매우 싫어한다. 그 이유는 상근이네 집에는 사나운 개 두 마리가 지키고 있기 때문이다. 하지만, 그들은 이 개의 행동이 예측 가능하다는 것을 모르고 있다. 매일 아침, 개 한마리는 A분동안 공격적이고, B분동안 조용히 쉬고 있다. 또다른 개는 C분동안 공격적이고, D분동안 조용히 쉰다. 두 개는 이 행동을 계속해서 연속적으로 반복한다. 우체부, 신문배달원, 우유배달원의 도착 시간이 주어졌을 때, 개 몇 마리에게 공격을 받는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C, D가 주어진다. 둘째 줄에는 P, M, N가 주어진다. P는 우체부의 도착 시간, M은 우유배달원의 도착 시간, N은 신문..
백준 BaekJoon 2991번: 사나운 개 [Java] 자바2020-11-29 문제 창영 마을의 우체부, 우유배달원, 신문배달원은 상근이네 집에 가는 것을 매우 싫어한다. 그 이유는 상근이네 집에는 사나운 개 두 마리가 지키고 있기 때문이다. 하지만, 그들은 이 개의 행동이 예측 가능하다는 것을 모르고 있다. 매일 아침, 개 한마리는 A분동안 공격적이고, B분동안 조용히 쉬고 있다. 또다른 개는 C분동안 공격적이고, D분동안 조용히 쉰다. 두 개는 이 행동을 계속해서 연속적으로 반복한다. 우체부, 신문배달원, 우유배달원의 도착 시간이 주어졌을 때, 개 몇 마리에게 공격을 받는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C, D가 주어진다. 둘째 줄에는 P, M, N가 주어진다. P는 우체부의 도착 시간, M은 우유배달원의 도착 시간, N은 신문..
2020.11.29 -
2020-11-21 final 이름에서도 느껴지듯이 자바에서 final이 선언된 값은 프로그램 실행 도중 변경을 할 수 없다. 때문에 초기화 준 값에서 바뀌지 않는다는 것인데, 초기화 방법을 알아보자. public class tFinal { final String name = "홍길동"; //필드에서 초기화 하는 방법 final String bloodType; public tFinal(String bloodType) { this.bloodType = bloodType; } //생성자에서 초기화 하는 방법 } 위의 코드에서 볼 수 있듯이 final 을 초기화하는 방법은 필드와 생성자를 통해서만 초기화할 수 있다. 단순한 값이라면 필드에서 선언하는 것이 좋으며, 외부에서 입력받아야만 하는 값이라면, 생성자를..
[Java] 자바 final 과 static final을 알아보자!2020-11-21 final 이름에서도 느껴지듯이 자바에서 final이 선언된 값은 프로그램 실행 도중 변경을 할 수 없다. 때문에 초기화 준 값에서 바뀌지 않는다는 것인데, 초기화 방법을 알아보자. public class tFinal { final String name = "홍길동"; //필드에서 초기화 하는 방법 final String bloodType; public tFinal(String bloodType) { this.bloodType = bloodType; } //생성자에서 초기화 하는 방법 } 위의 코드에서 볼 수 있듯이 final 을 초기화하는 방법은 필드와 생성자를 통해서만 초기화할 수 있다. 단순한 값이라면 필드에서 선언하는 것이 좋으며, 외부에서 입력받아야만 하는 값이라면, 생성자를..
2020.11.21 -
2020-11-19 다수의 Overloading을 하다 보면 반복적인 this 코드를 사용하게 되는데, 이러한 불필요한 반복을 줄이는 방법을 알아보자. (예제는 전에 오버 로딩 글에서 사용하던 걸 사용하도록 하겠다.) 오버 로딩 글 링크 : seeminglyjs.tistory.com/167 public class Overloading { String name; String sex; int age; public Overloading() { } public Overloading(String name) { this.name = name; } //이름 매개변수를 받는 생성자 public Overloading(String name, String sex) { this.name = name; this.sex = se..
[Java] 자바 this 와 Overloading 중복된 코드 처리법2020-11-19 다수의 Overloading을 하다 보면 반복적인 this 코드를 사용하게 되는데, 이러한 불필요한 반복을 줄이는 방법을 알아보자. (예제는 전에 오버 로딩 글에서 사용하던 걸 사용하도록 하겠다.) 오버 로딩 글 링크 : seeminglyjs.tistory.com/167 public class Overloading { String name; String sex; int age; public Overloading() { } public Overloading(String name) { this.name = name; } //이름 매개변수를 받는 생성자 public Overloading(String name, String sex) { this.name = name; this.sex = se..
2020.11.19 -
2020-11-05 싱글톤(Singleton)이란 전체 프로그램 내에서 하나의 객체만을 만드는 것을 이야기한다. 이는 싱글톤을 선언한 class 이외에 다른 곳에서 new를 이용한 새로운 생성자를 만드는 것을 제한하는 의미라고도 볼 수 있다. 싱글톤을 코드화 하기 위해서는 객체 앞에 private를 붙여 주어 선언된 class에서만 생성 가능하게 만들어 주면 된다. 구체적으로 코드로는 어떻게 선언되는지 알아보자. public class singleton { private static singleton st = new singleton(); private singleton() {} static singleton getSt() { return st; } } 위에는 싱글톤 객체를 생성하는 클래스이며, 아래는 ..
[Java] 자바 싱글톤(Singleton) 에 대하여 간단히 알아보자!2020-11-05 싱글톤(Singleton)이란 전체 프로그램 내에서 하나의 객체만을 만드는 것을 이야기한다. 이는 싱글톤을 선언한 class 이외에 다른 곳에서 new를 이용한 새로운 생성자를 만드는 것을 제한하는 의미라고도 볼 수 있다. 싱글톤을 코드화 하기 위해서는 객체 앞에 private를 붙여 주어 선언된 class에서만 생성 가능하게 만들어 주면 된다. 구체적으로 코드로는 어떻게 선언되는지 알아보자. public class singleton { private static singleton st = new singleton(); private singleton() {} static singleton getSt() { return st; } } 위에는 싱글톤 객체를 생성하는 클래스이며, 아래는 ..
2020.11.05 -
2020-11-01 단어 뜻에서도 알 수 있듯이 Infinity는 무한대라는 의미를 가지고 있고, NaN은 (Not a Number) 숫자가 아니라는 의미를 가지고 있다. 그러면 우선 어떠한 상황에서 이와 같은 결과가 나오게 되는지 알아보자. public class TemplateA { public static void main(String[] args) { double n = 10; System.out.println(n / 0.0); System.out.println(n % 0.0); } } 실수 값을 0 으로 나눈 몫의 값은 무한히 나누어질 수 있어 Colsole 창에 값이 Infinity 가 출력된 것을 확인할 수 있으며, 0으로 나눈 나머지의 값은 존재하지 않을뿐더러 숫자가 아니기 때문에, NaN..
[Java] 자바 Infinity 와 NaN 의 정의 및 확인하는 방법2020-11-01 단어 뜻에서도 알 수 있듯이 Infinity는 무한대라는 의미를 가지고 있고, NaN은 (Not a Number) 숫자가 아니라는 의미를 가지고 있다. 그러면 우선 어떠한 상황에서 이와 같은 결과가 나오게 되는지 알아보자. public class TemplateA { public static void main(String[] args) { double n = 10; System.out.println(n / 0.0); System.out.println(n % 0.0); } } 실수 값을 0 으로 나눈 몫의 값은 무한히 나누어질 수 있어 Colsole 창에 값이 Infinity 가 출력된 것을 확인할 수 있으며, 0으로 나눈 나머지의 값은 존재하지 않을뿐더러 숫자가 아니기 때문에, NaN..
2020.11.01 -
2020-10-29 자바의 나누기 연산자는 모두가 아는 2 가지가 있으며, 하나는 몫을 저장하는 '/' 연산자 나머지를 저장하는 '%'이다. 이는 굉장히 편리하게 활용되는데, 아주 가끔 불편하게 느껴질때도 있는데, 그때가 바로 소수점까지 구해야 하는 경우이다. 지금 부터 그러한 경우의 해결방법을 알아보도록 하자. (지금부터 모든 예는 우측 예제로 들겠다. ex) 10 / 4 = 2.5) 초기 속성타입을 double를 지정한다면, 쉽게 해결된 문제이지만, int / byte / short과 같은 속성 타입을 초기에 지정했다면, 다소 난감할 수 도 있다. (다만 그렇다고 모든 변수를 double로 설정하지는 말자. 이는 int = 4byte 의 크기 이지만 double 은 8byte의 크기이기 때문에 코드양..
[Java] 자바 정수(int)를 나누어서 소수점 값 쉽게 출력하는 법2020-10-29 자바의 나누기 연산자는 모두가 아는 2 가지가 있으며, 하나는 몫을 저장하는 '/' 연산자 나머지를 저장하는 '%'이다. 이는 굉장히 편리하게 활용되는데, 아주 가끔 불편하게 느껴질때도 있는데, 그때가 바로 소수점까지 구해야 하는 경우이다. 지금 부터 그러한 경우의 해결방법을 알아보도록 하자. (지금부터 모든 예는 우측 예제로 들겠다. ex) 10 / 4 = 2.5) 초기 속성타입을 double를 지정한다면, 쉽게 해결된 문제이지만, int / byte / short과 같은 속성 타입을 초기에 지정했다면, 다소 난감할 수 도 있다. (다만 그렇다고 모든 변수를 double로 설정하지는 말자. 이는 int = 4byte 의 크기 이지만 double 은 8byte의 크기이기 때문에 코드양..
2020.10.29 -
2020-10-19 문제 영희와 동수는 동전 던지기 게임을 하고 있다. 이 게임은 K번 라운드로 구성되고 다음과 같은 규칙들을 따른다: 한 라운드에서 영희와 동수는 한 번씩 동전을 던지고 항상 영희가 먼저 던진다. 동전을 던져 앞면이 나오면 1점을 얻고, 뒷면이 나오면 점수를 얻지 못한다. 한 명이 남은 기회에 모든 점수를 얻더라도 상대방이 현재까지 얻은 점수보다 작게 되면 게임 도중 어떤 시점에서도 게임은 바로 끝난다. 0이상 K이하인 임의의 정수 M과 N에 대해서, 이것이 항상 게임이 끝난 후 영희와 동수가 얻는 점수가 되는 것은 아니다. 예를 들어서, K = 2인 경우에, M과 N의 모든 경우에 대해서, 이것이 영희와 동수가 얻는 점수가 될 수 있는 지의 여부는 다음 표와 같다. 위 표에서 영희와 ..
백준 BaekJoon 10837번: 동전 게임[Java] 자바2020-10-19 문제 영희와 동수는 동전 던지기 게임을 하고 있다. 이 게임은 K번 라운드로 구성되고 다음과 같은 규칙들을 따른다: 한 라운드에서 영희와 동수는 한 번씩 동전을 던지고 항상 영희가 먼저 던진다. 동전을 던져 앞면이 나오면 1점을 얻고, 뒷면이 나오면 점수를 얻지 못한다. 한 명이 남은 기회에 모든 점수를 얻더라도 상대방이 현재까지 얻은 점수보다 작게 되면 게임 도중 어떤 시점에서도 게임은 바로 끝난다. 0이상 K이하인 임의의 정수 M과 N에 대해서, 이것이 항상 게임이 끝난 후 영희와 동수가 얻는 점수가 되는 것은 아니다. 예를 들어서, K = 2인 경우에, M과 N의 모든 경우에 대해서, 이것이 영희와 동수가 얻는 점수가 될 수 있는 지의 여부는 다음 표와 같다. 위 표에서 영희와 ..
2020.10.19 -
2020-10-14 문제 수학을 못해도 너무 못하는 상근이는 정인이에게 과외를 받고 있다. 오늘은 상근이가 사칙연산을 배우는 날이다. 정인이는 공책에 숫자 세개로 이루어진 등식을 적어주었다. (식은 자연수와 등호(=), 그리고 더하기, 빼기, 곱하기, 나누기 기호(+-*/)로 이루어져 있다) 상근이는 이런 등식을 사칙연산을 모르는 창영이게 자랑하다가 그만... 창영이는 숫자를 제외한 기호를 모두 지워버리고 말았다. 세 정수가 주어졌을 때, 원래 정인이가 적어준 등식을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정인이가 적어준 세 정수가 주어진다. 이 수는 100보다 작거나 같은 자연수이다. 항상 정답이 존재하는 경우만 입력으로 주어진다. 출력 첫째 줄에 정인이가 원래 적어준 등식을 출력한다. 입력으로..
백준 BaekJoon 2985번: 세 수[Java] 자바2020-10-14 문제 수학을 못해도 너무 못하는 상근이는 정인이에게 과외를 받고 있다. 오늘은 상근이가 사칙연산을 배우는 날이다. 정인이는 공책에 숫자 세개로 이루어진 등식을 적어주었다. (식은 자연수와 등호(=), 그리고 더하기, 빼기, 곱하기, 나누기 기호(+-*/)로 이루어져 있다) 상근이는 이런 등식을 사칙연산을 모르는 창영이게 자랑하다가 그만... 창영이는 숫자를 제외한 기호를 모두 지워버리고 말았다. 세 정수가 주어졌을 때, 원래 정인이가 적어준 등식을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정인이가 적어준 세 정수가 주어진다. 이 수는 100보다 작거나 같은 자연수이다. 항상 정답이 존재하는 경우만 입력으로 주어진다. 출력 첫째 줄에 정인이가 원래 적어준 등식을 출력한다. 입력으로..
2020.10.14 -
2020-10-08 수학에서 이분법(二分法, Bisection method)은 근이 반드시 존재하는 폐구간을 이분한 후, 이 중 근이 존재하는 하위 폐구간을 선택하는 것을 반복하여서 근을 찾는 알고리즘이다. 간단하고 견고하며 해의 대략적 위치를 안다면 일정 오차 내에 있는 1개의 해는 무조건 도출이 가능하나, 상대적으로 느린 방식이다. 이분법은 근이 존재한다는 것 자체를 전제로 구간을 설정하는 것이므로 근이 존재할 가능성은 100%이므로 방정식이 간단하고 근 자체가 가장 중요한 목적인 경우 가장 적합한 방법이다. 출처 : 위키피디아 위의 정의를 보면 어렵게 느껴질 수 있지만 사실은 간단하다. 각 배열의 크기에서 처음위치과 끝위치을 더한 후 2로 나눈 중간값이 찾고자 하는 값보다 크면 전체 범위를 처음위치..
[Java] 자바 이분 검색 구현 / java 이분법/이분검색 쉽게 구현2020-10-08 수학에서 이분법(二分法, Bisection method)은 근이 반드시 존재하는 폐구간을 이분한 후, 이 중 근이 존재하는 하위 폐구간을 선택하는 것을 반복하여서 근을 찾는 알고리즘이다. 간단하고 견고하며 해의 대략적 위치를 안다면 일정 오차 내에 있는 1개의 해는 무조건 도출이 가능하나, 상대적으로 느린 방식이다. 이분법은 근이 존재한다는 것 자체를 전제로 구간을 설정하는 것이므로 근이 존재할 가능성은 100%이므로 방정식이 간단하고 근 자체가 가장 중요한 목적인 경우 가장 적합한 방법이다. 출처 : 위키피디아 위의 정의를 보면 어렵게 느껴질 수 있지만 사실은 간단하다. 각 배열의 크기에서 처음위치과 끝위치을 더한 후 2로 나눈 중간값이 찾고자 하는 값보다 크면 전체 범위를 처음위치..
2020.10.08 -
2020-09-28 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. 양방향으로 번갈아 수행하면 칵테일 정렬이 된다. 오름차순으로 정렬하는 거품정렬의 과정은 다음과 같다 출처 : 위키피디아 링크 : ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC 소스코드 Scanner scan = new Scanner(System.in); int [] arr = new int [10]; //정렬할 숫자가 들어갈 배열 int n = -1; //입력받을 숫자의 개수가 ..
[Java] 자바 버블 정렬 / java 버블 정렬 구현하기2020-09-28 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n2)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. 양방향으로 번갈아 수행하면 칵테일 정렬이 된다. 오름차순으로 정렬하는 거품정렬의 과정은 다음과 같다 출처 : 위키피디아 링크 : ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC 소스코드 Scanner scan = new Scanner(System.in); int [] arr = new int [10]; //정렬할 숫자가 들어갈 배열 int n = -1; //입력받을 숫자의 개수가 ..
2020.09.28