전체 글 14

[6일차] 백준 _ 2750

수 정렬 문제이다. 퀵정렬을 공부한 김에 관련 문제에 대해서 풀어 보았다. 이문제를 푸는 방법에는 여러가지 방식이 있는데, 나는 공부한 퀵정렬을 활용 했다. - JAVA import java.util.*; public class QuickSort{ private static void quickSort(int[] arr) { //quickSort 함수 선언 quickSort(arr,0,arr.length-1); //정렬을 할 배열을 받아서 시작 위치와 끝나는 위치를 정하기 } //start, end, 파티션을 나눌 범위를 설정해 인자로 받음 private static void quickSort(int[] arr, int start, int end) { //재귀함수를 본격적으로 호출 int part2 = p..

[5일차] 백준 class1_1000,1001,1008

백준 문제를 클래스 별로 정리한 사이트를 알게되었다. 그래서 프로그래밍 언어인 자바를 금방 이해하기 위해서는 실전으로 연습하고 문법은 수업시간에 잘 듣는 걸로 플랜을 정했다. - JAVA import java.util.Scanner; public class Main { // 더하기 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("A의 값을 입력해주세요"); int A = sc.nextInt(); System.out.println("B의 값을 입력해주세요"); int B = sc.nextInt(); System.out.println(A+B); } } 1001은 뺄셈이다. - JAV..

[Algorithm] 퀵 정렬 (Quick Sort)2_JAVA

계속 해서 퀵정렬을 살펴보자. 우선 앞에서 배운 내용을 바탕으로 퀵정렬을 구현해보면 아래와 같다. [퀵정렬 구현] - JAVA import java.util.*; public class QuickSort{ private static void quickSort(int[] arr) { //quickSort 함수 선언 quickSort(arr,0,arr.length-1); //정렬을 할 배열을 받아서 시작 위치와 끝나는 위치를 정하기 } //start, end, 파티션을 나눌 범위를 설정해 인자로 받음 private static void quickSort(int[] arr, int start, int end) { //재귀함수를 본격적으로 호출 int part2 = partition(arr,start,end);..

[JAVA] 설치 및 초기 작업

오늘은 자바를 배우는 첫번째 시간이다. 자바를 이용하기 위해서는 JDK를 설치해야한다. 또 간편하게 사용하기 위해서 Eclipse도 추가로 설치했다. 내가 받은 링크는 아래와 같다. 원하는 버전을 구글에 검색하면 쉽게 찾을 수 있다. [링크 주소] - JDK 11 : https://www.oracle.com/kr/java/technologies/javase/jdk11-archive-downloads.html * 자바는 오라클 회원가입이 추가로 필요하다. - Eclipse : https://www.eclipse.org/downloads/packages/release/2020-09 Eclipse 2020-09 | Eclipse Packages www.eclipse.org 참고로 순서는 꼭 자바 먼저해야 설치..

공부기록/자바 2022.07.31

[Algorithm] 퀵 정렬 (Quick Sort)1_JAVA

일반적으로 가장 많이 사용 되는 퀵정렬(Quick Sort)에 대해 공부해 보자. 퀵정렬은 이름처럼 졍렬 속도가 매우 빠른 것에서 착안하여 알고리즘 개발자 찰스 앤터니 리터드 호어(C. A. R. Hoare)가 착안해 직접이름을 붙였다. [개요] [배열을 두그룹으로 나누기] 그룹을 나누기 위해서는 피벗 이하의 요소를 배열 왼쪽으로, 피벗 이하의 요소들을 오른 쪽으로 옮겨야 한다. - a[pl] >= x 가 성렵하는 요소를 찾을 때까지 pl을 오른쪽으로 스캔함 - a[pl] pr +1 이면 다음과 같은 그룹이 생기게 된다. - 피벗과 같은 값을 갖는 그룹 : a[pr +1], ··· , a[pl-1] 만일 피벗과 같은 값을 갖는 그룹이 만들어 진다면, 이때도 전과 마찬가지로 동일한 요소를 교환하면 된다(어..

[Algorithm] 자료구조_정렬(Sorting)

오늘은 정렬에 대해서 공부하고자 한다. 정렬이란 데이터의 집합을 일정한 순서로 나열하는 집합을 의미한다. 즉 알고리즘을 이용해 데이터를 정렬하게 되면 검색을 쉽게 할 수 있다. 정렬 알고리즘의 핵심 요소는 교환, 삽입, 선택이다. 대부분의 정렬 알고리즘은 이 3가지 요소들을 응용한 것이다. 대표적인 정렬 알고리즘은 크게 8종류가 있는데 아래와 같다. 1. 버블 정렬 : 이웃한 두 요소의 대소 관계를 비교하고 필요에 따라서 교환을 하는 알고리즘으로 단순교환정렬이라고도 한다. 2. 단순선택정렬 : 가장 작은 요소를 맨앞으로 이동하고, 두번째 작은 요소는 맨앞에서 두번째로 이동하는 등의 작업을 반복하는 것이다. 3. 단순삽입정렬 : 선택한 요소를 그보다 더 앞쪽의 알맞은 위치에 "삽입하는" 작업을 방법하여 정..

[4일차] 백준_2875

오늘은 대회 or 인턴 문제이다. 나는 while을 사용해서 간단하게 코드를 짰다. 코드를 해결 하기 위해서 나는 우선 k값에 집중을 했다. 나의 알고리즘은 다음과 같다. 1. k값은 그대로 두고 m값과 w값을 줄이기 => 이를 위해서 나는 while문 사용 했다. 2. 팀을 구성하기 위해서는 여자는 최소 2명 이상이여야 하고 남자는 3명 이상, 전체학생수는 3+ k(반드시 인턴십 가는 학생의 수)이상이여야 함의 조건을 적용하기 3. m값과 w값 빼주고 그리고 결성된 team 값은 더해주기 이러한 알고리즘 대로 작성된 코드는 아래와 같다. - JAVA import java.util.Scanner; public class Main { public static void main(String[] args) {..

[3일차] 백준_17608

3일차 알고리즘은 배열과 count 를 활용한 알고리즘 문제이다. 어제 배열로 문제를 결국 해결하지 못해 오늘은 배열로 문제를 해결하자고 다짐하면 문제를 골랐다. 주어진 문제의 내용을 이해하기는 쉬웠다. 문제의 예시에서 처럼 오른쪽에 크기 6의 막대가 놓여져 있다면 6보다 큰 막대만 보이게 된다. 따라서 문제에서는 보이는 막대를 구하라는 의미는 6보다 큰 막대기를 구하라는 말이다. 어떻게 보면 최대값을 찾는 문제인데, 이 문제를 풀기가 어려웠다. 그 이유는 최대값을 구하는 문제와 달리 이 문제를 풀기 위해서는 바로 i++ (->) 이 아니라 i-- (max) {// 뽑힌 i가 max보다 크다면 max = arr[i];// max는 뽑힌 i count++; //max보다 큰수를 뽑기 } } System.o..

[2일차] 백준 15953

알고리즘 2일차 오늘의 문제는 상금헌터이다. 문제가 길어 보이지만 난의도는 브로즈 문제이다. 문제는 다음과 같다. 원래 보통은 배열로 풀어야 코드가 간단하도 빠르게 풀린다고 한다. 하지만 아직 배열을 배우지 않아서 내가 풀수 있는 방식으로 문제를 해결했다. 내가 생각한 방법은 IF문과 반복문 활용이다. 연도별로 나의 등수를 가정하고 상금을 합하는 방식으로 문제를 해결했다. 내가 생각하는 코드는 아래와 같다. - JAVA import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); for( int i =0; ..

[1일차] 백준_2739

비전공자로서 처음 JAVA를 설치하고 배운날 처음하는 알고리즘이다. 사실 어려운 문제는 아직 할 줄 몰라서 백준의 구구단을 자바로 풀는 작업을 첫날 해보았다. JAVA는 JDK11버전이며, Esclipe를 사용했다. 또한 백준 문제를 풀기위해서는 클래스 명을 "Main"으로 설정해야만 한다!! 1일차는 가볍게 구구단 푸는 문제부터 시작했다. 문제는 아래와 같다. 처음에는 배운 자바는 자바스크립트와 많이 달라 용어를 익히는 데 어려움을 겪었다. - JAVA import java.util.Scanner; //Scanner 클래스 호출 public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); /..