목록java (8)
코학다식
Java 시작하기(6) Object Oriented Programming(3): abstraction using interfaces 객체 지향 프로그래밍의 네 가지 원칙 객체 지향 프로그래밍에는 앞서 살펴보았던 캡슐화를 포함한 네 가지 원칙이 존재한다. 그 원칙들은 다음과 같다. 캡슐화(Encapsulation) public 메서드로 접근을 제한함으로써 내부적 구현을 숨긴다. 인스턴스 변수와 몇 메서드들은 private을 유지한다. 추상화(Abstraction) 구현 없이 명세된 "Interface"의 사용 추상적인 클래스들 상속(Inheritance) 두 객체 사이의 "is-a" 또는 "has-a" 관계 super 클래스(부모 클래스) vs sub 클래스(자식 클래스) super 클래스들에 존재하는 코..
Java 시작하기(5) Object Oriented Programming(2): classes, variables, and methods Final 인스턴스 변수 인스턴스 변수가 final 키워드를 사용해서 선언되었다면, 그 변수의 값은 생성자 안에서만 결정될 수 있다. class Employee { private final String name; public Employee() { this.name = "Kim"; } public void setName(String name){ this.name = name; // Error: cannot assign a value to a final instance variable } } Static 변수 클래스를 정의할 때, 변수는 static 변수로 정의될 수 있..
Java 시작하기(4) Object Oriented Programming(1): classes, variables, and methods 자바, 객체 지향(Object-oriented) 언어 자바에서 대부분의 변수와 리터럴은 객체(Object)이다. 객체는 클래스의 인스턴스(instance)이다. 클래스는 객체의 타입이라고 할 수 있다. class Employee { String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } public class LEC { public static void main(String[] args) { Employee m = new Emp..
Java 시작하기 (3) 자바 프로그래밍 기초(2) 변수들 자바의 기본 문법은 C/C++과 매우 유사하다. 변수 정의 package FirstProgram; import java.util.Random; public class VariableDefinition { public static void main(String[] args){ int one; int two = 2; // with initialization int three = 3, four; // multiple definitions in one line Random generator = new Random(); // definition + class instantiation } } 변수 이름 문자로 시작해야 한다. 문자, 숫자, 그리고 $를 포함..
Java 시작하기 (2) 자바 프로그래밍 기초 (1) 자바 프로그래밍 기초: "Hello, World!" package FirstProgram; public class HelloWorld { public static void main(String[] args){ System.out.println("Hello, World!"); } } 자바에서 모든 것은 객체(object)이다. 객체는 클래스(class)의 인스턴스(instance)이다. 위 예제 프로그램은 HelloWorld라는 하나의 클래스를 가진다. 클래스는 메서드(methods)를 가질 수 있다. HelloWorld 클래스는 main이라는 하나의 메서드를 가진다. main 메서드는 프로그램의 entry point(starting point)이다. ..
Java 시작하기(1) 1. 자바(Java)란 무엇일까? general-purpose 프로그래밍 언어이다. 2019년 현재 가장 인기 있는 프로그래밍 언어이다. 1-1. 그렇다면, 프로그래밍 언어란 무엇일까? 컴퓨터에서 명령을 수행하기 위해 쓰이는 언어이다. 왜 필요할까? CPU는 기계어의 집합을 이해한다. 기계어는 인간이 이해하고, 사용하기에 너무 어렵다! 그래서 프로그래머들은 기계어로 compile 혹은 interpret되고 실행되는 프로그래밍 언어를 사용해서 응용 프로그램을 만든다. 1-2. 프로그래밍 언어에는 두 가지 종류가 있다. Compiled language 컴파일러(compiler)가 전체 프로그램을 읽고 object code(= machine code or binary code)로 변환한..
안녕하세요. 오랜만의 알고리즘 포스팅입니다. 제가 방학이라고 공부 안 하고 놀아서 그렇습니다. (반성...) 이번 포스팅에서는 Prefix sum(구간 합)에 대해 알아보도록 하겠습니다. 아주 간단하지만 유용한 알고리즘입니다. Prefix sum? 영어로는 이게 뭐지 싶지만 한글로 보면 의미를 대충 짐작하실 수 있을 겁니다. 구간 합이란 말 그대로 수들의 나열에서 특정 구간의 합을 의미합니다. 이와 비슷한 개념으로 부분 합이 있습니다. 부분 합은 구간 합과 달리 처음부터 특정 인덱스까지의 합을 의미합니다. 구간 합에서의 구간은 당연히 어느 구간이든 가능합니다. 처음부터 끝까지일 수도 있고, 세 번째에서 일곱 번째일 수도 있고, 마지막 숫자만일 수도 있겠습니다. 예를 들어 볼까요? 1 2 3 4 5 6 7..
알고리즘 문제 풀이 사이트를 모아 보았습니다. 새롭게 알게 되는 사이트가 있으면 계속 추가될 예정입니다. 프로그래밍 대회 참가보다는 알고리즘 공부에 주안점을 둔 분들(저 포함)을 위한 글이므로 Topcoder, Codeforces 등 대회 참가 목적에 보다 적합한 사이트들은 제외되었습니다. 1. 백준 온라인 저지(https://www.acmicpc.net/) 첫 번째는 많은 분들이 알고 계실 백준 온라인 저지입니다. 다양한 프로그래밍 대회들의 많은 문제들이 올라와 있는 한글 사이트입니다. 대표자이신 최백준 님이 강의도 진행하시는 걸로 아는데, 안 들어 봐서 어떤지는 잘 모르겠습니다. 별로 도움이 되는 정보는 아니지만 noj.am이라는 주소를 주소창에 입력해도 백준 온라인 저지에 접속할 수 있습니다. 단계..