본문 바로가기

개발자노트

(260)
정렬 기본2 package class01; public class Test02 { public static void main(String[] args) { int[] data = { 5, 4, 3, 2, 1 }; // 배열 생성 for (int a = 0; a < data.length; a++) { for (int i = 0; i < data.length - 1; i++) { if (data[i] < data[i + 1]) ; { int tmp = data[i]; data[i] = data[i + 1]; data[i + 1] = tmp; } } // 1회전 정렬, 1회전을 한 후 출력을 할거니까 그 다음에 출력을 하는 조건식을 써줘야한다. System.out.println(); for (int i = 0; i < d..
정렬 기본 package class01; public class Test01 { public static void main(String[] args) { // 배열 -> 자료구조 + 알고리즘 // "정렬" -> "탐색(검색)"을 하려고 /* * 배열을 사용한다는 건, 여러개의 데이터를 다루는 상황! 탐색(검색)하겠다는 이야기! 탐색을 효율적으로 하려면? -> 정렬 */ // 배열 정렬 알고리즘 // : 버블,삽입,선택,퀵,셀,도수,.... // [버블(거품) 정렬] // 오름차순 정렬 -> tmp(교환알고리즘) 사용(a가 b보다 무조건 작음) // (a,b,c,d) -> a와b, b와c, c와d를 비교하면서 정렬 // 1회전 정렬을 하게 되면 : 가장 큰 수가 본인 자리를 찾아갈 수 밖에 없다. // 가장 빠른 로..
우아한Tech [10분 테코톡] JVM의 Garbage Collector JVM(Java Virtual Machine) - 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 - 역할 : 메모리 관리, Garbage Collector를 수행 Garbage Collector - 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 Stack: 정적으로 할당한 메모리 영역 원시 타입의 데이터가 값과 함께 할당. Heap영역에 생선된 Object 타입의 데이터의 참조 값 할당. Heap: 동적으로 할당한 메모리 영역 모든 Object 타입의 데이터가 할당. Heap영역의 Object를 가르키는 참조 변수가 Stcak에 할당. - 메인 매서드가 끝나게 되면 Stack 영역에 있는 데이터가 날라가고, Heap 영역에 객체타입의 데이터만 남는데 이러한 객..
우아한Tech [10분 테코톡] 시간 복잡도 시간복잡도 - 알고리즘과 밀접한 연관이 있음 // 알고리즘 ) 문제를 해결하기 위한 방법 - 문제를 해결하는데 걸리는 시간과 입력의 함수관계 log n 이 가장 현실세계에서 이상적인 알고리즘이라고 평가됨. 지수 형태로 올라가는 알고리즘은 사실상 풀 수 없는 알고리즘 이라고 함. 그렇다면 어떤게 현실적이고 어떤게 비현실 적인가? 현실적 알고리즘 - Polynomial complexity (P 문제) , sorting. dp.... - 상식선에서 풀 수 있는 문제 - 정렬 등 비현실적인 알고리즘 -Nondeterministic Polynomial complexity (NP 문제) -복잡도가 팩토리얼이나 지수형태로 올라가면 비현실적인 알고리즘 -해밀턴 경로 문제 NP 문제 소인수분해문제 3*7=21 21=3*..
우아한Tech [10분 테코톡] 빌드와 배포 목차 1.빌드란 2.빌드도구 3.배포란 4.CI/CD에 대하여 5.무중단 배포 1. 빌드란 - 컴파일 그리고 빌드 - 컴파일 : 작성한 소스 코드를 바이너리 코드(2진법)로 변환하는 과정 - 링크 : 여러개로 분리된 소스 코드들을 컴파일한 결과물들에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해 주는 작업 (이미 컴파일 된 파일이란 뜻) - 빌드 : 소스 코드를 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정 (jar,war...) 2. 빌드 도구 - 소스 코드를 컴파일,테스트, 정적 분석 등을 실시하여 실행 가능한 애플리케이션으로 자동 생성하는 프로그램 - 계속해서 늘어나는 라이브러리의 자동 추가 및 관리 - 라이브러리의 버전을 자동으로 동기화 => 자동이라는 말이 계속 등장하..
우아한Tech [10분 테코톡] 빌드 용어 영상 1.컴파일과 빌드의 차이점 원시파일:(소스코드) ex).java ---> 컴파일러 ---> 오브젝트 파일 ---> 링커 ---> 실행파일.jar 컴파일: 우리가 사용하는 언어를 컴퓨터가 이해할 수 있는 형태(이진코드 ex).class로 만들어주는 것 링크 : 오브젝트 파일로 만들었다고 해서 바로 실행할 수 없다. 오브젝트 파일에 다른 외부 리소스를 연결하는 과정이 필요함. 이 과정을 링크라고함 2.대체 빌드는 뭘까? 사람이 알아들을 수 있는 형태의 원시파일을 실제 컴퓨터에서 프로그램으로 돌릴 수 있게 만드는 일련의 과정을 빌드라고 함. 컴파일이라는 과정는 빌드 안에 부분집합으로 속해있는 것 빌드를 우리가 하나? 그래들이라는 도구를 사용함 3.빌드 도구란? 소스 코드로부터 실행 가능한 어플리케이션을 생성하..
배열을 이용한 학생기록부 예제 package class06; import java.util.Scanner; public class Test07_2 { public static void main(String[] args) { int cnt = 5; // 여기에 학생수 넣으시면됩니다!~~ int[] arr = new int[cnt]; // 나, 배열쓰고싶으니까 그만큼의 공간을 생성해줘! // 객체는 초기화를 디폴트로 해준다! Scanner sc = new Scanner(System.in); int i = 0; while (true) { System.out.print("학생" + (i + 1) + " 성적입력: "); arr[i] = sc.nextInt(); if (arr[i] < 0 || 100 < arr[i]) { // 경계값 검사, ..
배열의 기초2 package class06; public class Test06 { public static void main(String[] args) { // 학생 5명을 데리고 있는데 점수 10 20 30 40 50 int[] stu = { 10, 20, 30, 40, 50, 60, 70, 80 }; // 배열의 요소의개수==배열의길이 // int len=5; -> 학생수 5명에 대한 숫자 // 특정단어 타이핑한뒤 .누르면 -> 함수/키워드 : 반환값 - 제작자 for (int i = 0; i < stu.length; i++) { // 요소의 개수(배열의 길이)를 불러와줌. System.out.println("학생 " + (i + 1) + "번의 성적은" + stu[i] + "점"); } } }