본문 바로가기

전체 글

(99)
[백준][JAVA]하노이 탑 이동 순서(11729번) - 재귀 algorithm https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로www.acmicpc.net* 문제는 해당 게시물 참고바랍니다. 해당 문제는 재귀를 사용하여 동작을 구현하는 문제입니다. method 내부에서 method 자신을 다시 호출하는 것을 '재귀호출(recursive call)'이라 합니다.호출된 method는 '값에 의한 호출(call by value)'를 통해 원래의 값이 아닌 복사된 값으로 작업하기 때문에호출한 method와는 관계없이 독립적인 작업수행을 합니다. *..
[백준][JAVA]카드2(2164번) - 스택, 큐, 덱 algorithm https://www.acmicpc.net/problem/2164 2164번: 카드2N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가www.acmicpc.net* 문제는 해당 게시물 참고바랍니다. 해당 문제는 큐(Queue)를 사용하여 동작을 구현하는 문제입니다. Queue는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있습니다. Queue의 경우 LinkedList 컬렉션 클래스로 구현하는 것이 가장 적합합니다.만약 배열기반의 ArrayList와 같은 컬렉션 클래스로 구현하게 되면 데이터를 꺼낼 때마..
[백준][JAVA]블랙잭(2798번) - 브루트 포스 algorithm https://www.acmicpc.net/problem/2798 2798번: 블랙잭첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장www.acmicpc.net* 문제는 해당 게시물 참고바랍니다. 브루트 포스 algorithm이란 모든 경우의 수를 탐색한다는 뜻으로,완전탐색이라고 하며, 해당 알고리즘의 가장 기본적인 접근방식은 해가 존재할 것으로 예상되는 모든 영역을 전부 탐색하는 것입니다. 해당 문제를 해결한 방법입니다.import java.util.*;public class Main { public static voi..
자바 복습하기(예외처리편) * 해당 게시물은 자바의 정석(책)을 참고하여 작성하였습니다. 에러 에러는 발생 시점에 3가지 종류로 나뉜다.1. 컴파일 에러 - 컴파일 시에 발생하는 에러2. 런타임 에러 - 실행시에 발생하는 에러3. 논리적 에러 - 실행은 되지만, 의도와 다르게 동작하는 것 여기서 런타임 에러는 2가지로 나뉜다.에러(error) - 프로그램 코드에 의해서 수습될 수 없는 심각한 오류예외(exception) - 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류  예외 클래스자바는 오류를 클래스로 정의되어 있다.Exception의 자손 클래스로는 IOExeption, ClassNotFoundException, RuntimeException들이 있는데자바의 예외 클래스는 RuntimeException과 그 외의 E..
자바 복습하기(extends, super, abstract, interface편) * 해당 게시물은 자바의 정석(책)을 참고하여 작성하였습니다. 상속상속이란 기존의 class를 재사용하여 새로운 class를 작성하는 것으로 extends를 붙여서 사용한다.ex)class Child extends Parent {// Child, parent를 확장한}parent - 조상 class로 super classchild - 하위 class 사용시 주의사항1. 생성자와 초기화 블럭은 상속되지 않고 멤버만 상속된다.2. 자손 class의 member 개수는 조상 class보다 항상 같거나 많다.  Object classobject class는 모든 class의 상속계층도의 최상위에 있는 조상class이다.class Member extends Object {//pass}이렇게 하면 Object cl..
자바 복습하기 (객체지향, 클래스, 인스턴스, 오버로딩, 생성자편) * 해당 게시물은 자바의 정석(책)을 참고하여 작성하였습니다. 객체지향언어 자바는 대표적인 객체지향언어이다. 객체지향언어에는 3가지의 주요 특징이 있다. 1. 코드의 재사용성이 높다. - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. - 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며 ,코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다. class와 object(객체) class - class란 object를 정의해 놓은 것으로 object를 생성하는데 사용된다. object - obj..
자바 복습하기 (배열편) 배열의 선언과 생성 타입[] 변수이름; // 배열의 선언(배열을 다루기 위한 참조변수 선언) 변수이름 = new 타입[길이] //배열을 생성 (실제 저장공간 생성) * 대부분의 경우 배열의 생성과 선언을 동시에 한다 타입[] 변수이름 = new 타입[길이]; int [] count = new int[5]; 배열의 index는 다른 코드들과 마찬가지로 0부터 시작한다. ex) count[5] => size= 5, count[0] ~ count[4] 배열의 길이 배열은 한번 선언되고 나면 길이를 변경할 수 없다. 만약 더 큰 길이의 배열이 필요하다면 1. 더 큰 배열을 새로 생성한다. 2. 기존 배열의 내용을 새로운 배열에 복사한다. 배열의 복사 System.arrayCopy()를 사용하면 효율적으로 배열을..
자바 복습하기 (연산자, 조건문과 반복문편) 연산자편비교 연산자>=,  논리 연산자&&(and), ||(or) 증감 연산자전위형 - 값이 참조되기 전에 증가시킨다. s = ++i; 후위형 - 값이 참조된 후에 증가시킨다. s = i++; // i++;는  i=i+1;과 같은 의미이다. 조건 연산자?: 사용법에 대하여 알아보겠다.result = (x>y) ? x : y; 의 경우if) x>y가 true면 result = xif) x>y가 false면 result = y   조건문과 반복문편 조건문은 if문과 switch문으로 2가지가 있다.처리할 경우의 수가 많을 때는 if문보다 switch문이 효율적이지만, switch문은 if문보다 제약이 많아 주로 if문을 사용한다. if문 대부분의 코드에서의 형식과 같다.if(조건식1) {//pass} els..
자바 복습하기 (변수편) 1.  변수의 선언변수는 선언과 동시에 초기화 하는 것을 추천한다.int age = 23;int - 변수타입age - 변수이름23 - 23으로 초기화 자료형은 크게 '기본형'과 '참조형' 2가지로 나뉜다.기본형 변수 - 실제 값(data)를 저장참조형 변수 - 어떤 값이 저장되어 있는 주소를 값으로 가짐 * java는 C언어와 달리 참조형 변수 간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수이다. *참조변수 선언방법Number one = new Number(); //Number객체를 생성하여 그 주소를 one에 저장객체를 생성하는 연산자 new의 결과는 생성된 객체의 주소로 해당 주소는 참조변수 one에 저장되고 참조면수 one을 통해서 생성된 객체를 사용할 수 있다.  2. 변..
백준 JAVA로 문제 제출방법 (1000번) 안녕하세염슬슬 복학도 해야되고 학교 문제푸는 방식을 연습좀 해보고자 코딩 문제푸는 사이트를 찾아보던중 백준과 프로그래머스를 고민했었습니다.근데 프로그래머스는 상업적으로 이용이 안된다고 해서 백준을 이용하게 되었습니다. 백준 문제 제출방법 우선 제가 제출한 문제입니다.import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int a = scanner.nextInt();        int b = scanner.nextInt();        System.out.println(a+b);    }}백준에서는 ..