본문 바로가기

분류 전체보기

(47)
기본 정렬 - 선택 정렬(selection sort) 알고리즘 1. 선택 정렬 (Selection sort) : 선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와의 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬을 수행하게 된다. 제자리 정렬(in-place sorting) 알고리즘의 하나 - 정렬되지 않은 값들 이외에 다른 추가 메모리를 요구하지 않는 정렬 방법이다. 1회전을 수행하고 나면 가장 작은 값의 자료가 맨 앞에 오게 되므로 다음 회전에서는 두 번째 자료를 가지고 비교한다. ​ 2. 예제 - 배열에 1, 6, 4, 5, 3 이 저장되어있다고 가정 -> 오름차순 정렬 1회전 : ​ 2회전 : 3회전 :..
14단계 정렬 1. 단어 정렬 (문제번호 : 1181) 문제 : 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 : 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 : 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...
13단계 브루트 포스 1. 블랙잭 (문제 번호 : 2798) 문제 : 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버젼의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장..
11단계 재귀 1. 피보나치 수5 (문제 번호 : 10870) 문제 : 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력 : 첫째 줄에 n번째 피보나치 수를 출력한다. import java.util.Sca..
자바의 인터페이스 1. 인터페이스 (Interface) : 자바에서 객체의 사용 방법을 정의한 타입으로 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킨다. -> 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서 직접 객체의 메소드를 호출하지 않고 중간에 인터페이스를 둔다. -> 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다. -인터페이스 선언 : 인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용한다. [ public ] interface 인터페이스명 { // 상수 [ public static final ]..
10단계 수학 2 1. 소수 구하기 (문제 번호 : 1929) -> 에라토스테네스의 체를 이용하여 소수 구하기 *에라토스테네스의 체 소수인 2를 제외한 2의 배수를 지우고 남은 수 중 또 다른 소수인 3을 제외한 3의 배수를 지워가면서 남는 소수를 구하는 방법 문제 : M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 자연수 M과 N이 빈칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) 출력 : 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ..
9단계 수학 1 1. 설탕 배달 (문제 번호 : 2839) 문제 : 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 : 상근..
자바의 추상 클래스 1. 추상 클래스 : 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 추상 클래스는 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를의미한다. 추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다. 즉, 추상 클래스는 new 연산자를 사용해서 인스턴스를 생성시키지 못한다. Animal animal = new Animal();//(X) *추상 클래스는 실체 클래스를 만들기 위해 부모 클래스로만 사용된다. (extends 뒤에만 올 수 있는 클래스) class Ant extends Animal { ... }// (O) ※실체 클래스들의 공통적인 특성을 뽑아 추상 클래스로 만드는 이유? 실체 클래스들의 공통된 필드와 메소드의 이름..