목록java (39)
개발저장소
문제https://www.acmicpc.net/problem/1018 풀이체스판은 흰색과 검은색이 번갈아가면서 칠해져있어야 한다. 인접한 칸이 같은 색이면 안된다.N X M 크기의 보드를 8 X 8 사이즈로 잘라 체스판을 만드려고 한다.이렇게 잘라서 만든 체스판은 색이 잘못된 경우 새로 칠하려고 한다.자를 수 있는 체스판의 경우 중에서, 새로 칠하는 횟수가 가장 적은 경우의 최소 개수를 출력한다.문제를 풀기 위해선 두 가지 포인트를 해결해야 한다.첫째, N X M 사이즈의 보드를 어떻게 체스판 사이즈로 나눌 것인가.둘째, 새로 칠하는 횟수를 어떻게 구해야 할 것인가. 첫째는 만들어질 수 있는 체스판의 경우의 수는 (N - 7) * (M - 7)이 된다.(0,0)을 첫 번째 칸으로 가지는 체스판부터, (..
문제https://www.acmicpc.net/problem/18111 풀이마인크래프트의 땅 고르기 작업을 한다. 땅 고르기란, 범위 내의 블록 높이를 같은 상태로 만드는 작업이다.땅 고르기 범위는 N X M 크기이다.하나의 블록을 캐면 2초가 걸리고, 그 블록이 인벤토리에 저장된다.하나의 블록을 설치하면 1초가 걸리고, 인벤토리에서 꺼낸 블록을 사용한다. 인벤토리에 블록이 없다면 설치할 수 없다.땅의 높이는 최소 0, 최대 256이다. 블록은 최대 64,000,000개가 주어질 수 있고, 맵의 크기는 최대 500 X 500이다.맵 전체의 땅을 고르는데 걸리는 최소 시간을 구해야 한다. 만약 시간이 같다면 땅의 높이가 더 높은 경우를 출력한다. 주어진 맵의 크기가 크지 않아 브루트포스 알고리즘을 사용..
1. 동기화(Synchronized)동기화는 하나의 작업이 완전히 완료된 후 다른 작업을 수행하는 것을 말한다. 이와 반대로 비동기는 하나의 작업 명령 이후 완료 여부와 상관없이 바로 다른 작업 명령을 수행하는 것을 말한다. 동기화 방법은 메서드 동기화와 블록 동기화가 있다.메서드 동기화는 2개의 스레드가 동시에 메서드를 실행할 수 없다는 것, 블록 동기화는 2개의 스레드가 동시에 해당 블록을 실행할 수 없다는 것을 의미한다.하나의 스레드가 공유 객체를 사용할 때, 다른 스레드가 사용할 수 없도록 하는 것을 락(lock)이라고 표현한다. ※ 트랜잭션: 업무의 최소 단위 메서드 동기화동기화하고자 하는 메서드의 리턴 타입 앞에 synchronized 키워드를 넣는다.class MyData { int ..
스레드란?메모리가 CPU를 독립적으로 처리하는 하나의 최소 작업 단위를 말한다. CPU: 중앙 처리 장치라고도 하며, 연산을 수행함으로써 실제 프로그램을 실행하는 장치이다.하드디스크: 저장 매체로서 상대적으로 속도가 가장 낮다.메모리: CPU가 연산을 하기 위해 필요한 정보를 저장해두는 공간이다. 프로그램은 하드디스크에 저장된 파일들의 모임, 프로세스는 메모리에 로딩된 프로그램을 뜻한다.이때, 여러 프로그램이 메모리에 로딩되어 실행되는 것을 멀티 프로세스라고 한다. 마찬가지로 여러 스레드를 생성해 동시에 2개 이상의 스레드가 동작하는 것을 멀티 스레드라고 한다. 1. 스레드의 동시성과 병렬성동시성(Concurrency)처리해야할 작업의 수가 CPU 코어 수보다 많을 때를 말한다. CPU는 각 작업 스레..
예외란?프로그래밍 과정에서 발생한 오류 중에 개발자가 해결할 수 있는 오류를 예외(exception)이라고 한다.그리고 이를 적절하게 조치하는 것을 예외 처리라고 한다. 예외와 에러의 차이점예외(exception)와 에러(error)는 비슷하지만 다른 의미를 가진다.연산, 숫자 포맷 오류 같은 상황에 따라 개발자가 해결할 수 있는 오류는 예외라고 한다.그리고 JVM 자체에서 발생하는 오류 같은 개발자가 해결할 수 없는 오류를 에러라고 한다. 둘 다 Throwable 클래스를 상속하며 Exception은 일반 예외(checked exception)와 실행 예외(unchecked/runtime exception)로 나뉜다. 일반 예외는 컴파일 이전에 검사하며 실행 예외는 실행할 때 발생한다.일반 예외는 In..
1. 이너 클래스클래스 내부에 포함되는 클래스인스턴스 이너 클래스정적 이너 클래스지역 이너 클래스 (메서드 내부에서 정의) 인스턴스 이너 클래스는 아우터 클래스의 모든 필드와 메서드에 접근 가능하다.A 클래스 내에 B 이너 클래스가 존재한다면, A a = new A(), A.B b = a.new B()와 같이 아우터 클래스를 선언해야 사용할 수 있다. 마찬가지로 A.this.필드명 같은 방법으로 참조 가능하다. 정적 이너 클래스도 마찬가지로 static의 속성에 맞게 사용 가능하다. 정적 이너 클래스는 아우터 클래스의 정적 필드와 메서드만 사용 가능하다. 지역 이너 클래스메서드 내에서 정의된 클래스이다. 지역 변수처럼 메서드 내부에서만 사용할 수 있으므로, 지역 이너 클래스는 선언 후 바로 객체를 생성해..
abstract 제어자'추상적인' 이라는 뜻. 추상 메서드나 추상 클래스에 사용된다. 구체적이지 않은 메서드를 추상 메서드라고 하며 이를 하나라도 포함하는 클래스를 추상 클래스라고 한다.추상 메서드는 중괄호가 존재하지 않아 기능이 정의되지 않는다. 어떤 기능을 정의하지 않은 미완성 메서드라고 볼 수 있다.abstract 리턴 타입 메서드명 (); 과 같은 구조를 가진다. abstract를 사용하지 않더라고 충분히 상속과 오버라이딩을 사용할 수 있다. 하지만 추상 클래스를 상속 받은 자식 클래스는 반드시 추상 메서드를 오버라이딩 해야 한다는 특징이 있다. 자식 클래스로 하여금 확장을 유도하도록 하는 이점이 생긴다. abstract를 사용하면 자식 클래스에서 무조건 메서드를 오버라이딩해서 재정의해야하므로 오..
1. 클래스의 상속상속(Inheritance)은 부모 클래스의 필드, 메서드, 이너 클래스를 내려 받아 자식 클래스 내부에 포함시키는 자바의 문법요소이다. 대학생 클래스와 직장인 클래스가 있다고 가정하자. 대학생 클래스에는 이름, 나이, 학번이라는 필드와 먹기, 잠자기, 등교하기라는 메서드가 존재한다.직장인 클래스에는 이름, 나이, 사번과 먹기, 잠자기, 회사가기라는 메서드가 존재한다.두 클래스 모두 이름과 나이, 먹기와 잠자기가 공통으로 포함한다. 이름과 나이, 먹기와 잠자기를 가진 사람 클래스를 만들어 대학생과 직장인 클래스가 상속받도록 하면, 추가로 필드와 매서드만 구성하면 된다. 즉, 부모 클래스는 자식 클래스의 공통적인 특징을 모아 구성한 클래스라고 볼 수 있다. 상속의 장점1. 상속으로 인해 ..
1. 인스턴스 필드, 메서드와 정적 필드, 메서드필드와 메서드는 선언 방법에 따라 인스턴스와 정적(static)으로 분류할 수 있다.인스턴스로 선언되면 객체 생성 후 사용할 수 있고, static으로 선언되면 객체 생성 없이도 사용 가능하다. ※ 필드는 객체가 존재하는 힙 영역에 저장되지만, 메서드는 객체마다 저장되면 중복으로 인해 메모리 효율이 떨어진다. 그러므로 메서드는 메서드 영역에 저장되고, 객체 없이 사용하지 못하도록 제한된다. this와 super 키워드this와 this(), super와 super()는 비슷하게 생겼지만 다른 역할을 수행한다. this()는 생성자가 다른 생성자를 호출할 때 사용된다. this() 호출은 생성자의 첫 번째 문장에서 이루어진다는 특징이 있다. this는 객체..
▶ 객체와 객체 지향 프로그래밍https://develrepo.tistory.com/24 [Java] Java란?1. Java Java는 썬 마이크로시스템즈에서 개발한 객체 지향적인 프로그래밍 언어이다. 특징 JVM(Java Virtual Machine) 위에서 동작하기 때문에 운영체제와 상관없이 동작한다. 객체 지향 프로그래밍에 적develrepo.tistory.com 1. 클래스와 인스턴스클래스(Class)는 객체를 생성하기 위한 설계도이다. 객체 그 자체를 오브젝트(Object)라고 부르며, 클래스로부터 생성된 객체를 인스턴스(Instance)라고 부른다. 인스턴스는 클래스와의 관계에 중점이 있다.클래스를 선언하는 것은 객체를 생성하기 위한 설계도를 작성하는 작업이라고 할 수 있다. 클래스를 생성..