분류 전체보기 50

리터럴(literal)

리터럴 변하지 않는 데이터 그 자체, 소스 코드 내에서 직접 입려된 값 int a = 28; String b = "리터럴이란?"; //28, "리터럴이란?" 이 리터럴인 것 원시타입과 String으로 구분됨 저장타입 예시 정수 byte(1byte), char(2byte), short(2byte), int(4byte), long(8byte) 소수점 없는 정수 리터럴은 10진수 정수로 간주 ex) 0, 10, -37 0으로 시작되는 리터럴은 8진수로 간주 ex) 09, -03 0x, 0X로 시작하고 0~9, A~F, a~f로 구성된 리터럴은 16진수로 간주 ex) 0x1, 0XF, 0xAC08 실수 float(4byte), double(8byte) 소수점이 있는 리터럴은 10진수 실수로 간주 ex) 0.25..

JAVA 2022.06.08

[JAVA]형변환 - 암시적 형변환, 명시적 형변환

형변환 변수의 타입을 다른 타입으로 변환하는 것 boolean은 변환 불가, boolean을 제외한 나머지 기본형은 서로 형변환 가능 메모리공간 크기가 기준이 아니라 값의 표현범위를 기준으로 함 → float은 4byte, long은 8byte임에도 long(정수)이 float(실수)로 형변환이 가능한 이유 암시적(묵시적) 형변환(implicit Conversion) 표현 범위가 큰 자료형으로 변경할 경우(byte → short, int → long)에는 암시적 형변환이 이뤄짐 연산 시 컴파일러가 자동으로 수행 명시적 형변환(Explicit Conversion) 변수의 값을 더 작은 타입의 변수에 넣는 경우 타입을 지정해줘야 형변환 가능 기존 값의 손실 혹은 변질이 일어날 가능성이 있는 경우(float ..

JAVA 2022.06.08

Docker에 tomcat 올리기

학원에서 프로젝트 진행할 때 제공해주었던 AWS가 언제 만료될지 모르므로 개인 계정(AWS medium)에서 배포하기로 함 하나의 웹사이트를 구성하는데 MVC 패턴의 게시판서버와 Rest api 구조의 음원서버로 나뉘어져 구성되어 있었음 게시판서버와 음원서버를 하나의 tomcat에서 ContextPath로 구분하여 돌릴지, Docker에서 tomcat 컨테이너를 각각 올려서 서버를 아예 분리할지 고민하였는데 컨테이너 2개를 돌리는 게 서버 관리가 편할 거 같았고 또 그 편이 MSA에 좀 더 가깝지 않을까라는 생각에 Docker에 tomcat 컨테이너 2개 올리기로 함 볼륨도 각각 생성하고 마운트 했음 더보기 젠킨스 배포 시에 webApps에 ROOT.war 파일로 넣어줄 생각으로 컨테이너마다 볼륨을 따로..

프로젝트/2 2022.06.08

완전탐색(Brute-Force Search)

완전탐색 가능한 경우의 수를 모두 나열하여 목표 값을 찾는 방법으로, 경우의 수가 적을 때 유용 시간이 오래 걸림 종류 : 단순 부르트포스, 비트마스크, 백트래킹, 재귀, 순열/조합/부분집합, BFS/DFS 단순 부르트포스(Brute-Force) for문과 if문 등으로 모든 case를 만드는 방법 비트마스크(Bitmask) 시간복잡도 : O(1) 요소가 n개인 집합의 모든 부분집합을 구할 때, 각 요소의 포함 여부를 0, 1로 구분해 배열에 저장할 수 있음 비트(2진수) 연산을 통해 부분집합을 표현하는 방법으로, 요소가 두 가지 상태만을 가질 때 사용 가능 비트 연산 시간복잡도 : O(1)연산자 : AND(&), OR(|), NOT(~), XOR(^), Shift()비트 연산자는 우선순위가 낮으므로 괄..

프로그래머스 - 모의고사(JAVA)

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 첫 번째 제출 더보기 public static int[] solution(int[] answers) { int[] answer = {}; int answersLength = answers.length; int[] student1 = new int[answersLength], student2 = new int[answersLength], student3 = new..

해시(Hash)

해시(hash) 시간복잡도 : 평균 O(1) 데이터를 해시테이블에 key-value형태로 저장, 관리하며 동적으로 크기가 증가하는 자료구조 내부적으로 배열을 사용하며, 고유한 해시값을 index로 사용하므로 삽입, 삭제 시 데이터 이동이 필요 없고 검색이 빠름 해시 함수(hash function) 및 해싱(hashing) 해시 함수 임의의 값 key를 고정 길이의 해시 값(hase value)으로 매핑하는 함수 해시함수에 따라 충돌 발생할 수 있음 해시 값을 고정 길이로 생성하는 이유 : key값을 그대로 색인에 사용할 경우, key값의 길이만큼 저장 공간을 마련해야 하기 때문 단방향 암호화의 대표적인 예(해시값으로부터 원본데이터를 추출할 수 없음) key : 매핑 전 원본 데이터 해시 값 : 매핑 후 ..

우선순위 큐(Priory Queue), 힙(Heap)

우선순위 큐 우선순위가 높은 데이터 순서대로 출력하는 자료구조 FIFO 구조인 큐와 달리, 우선순위 큐는 우선순위가 높은 순서대로 데이터가 출력됨 구현 방법 : 배열, 연결리스트, 힙 배열 : 구현은 쉬우나, 데이터가 많은 경우에는 전체 비교를 거쳐 적절한 위치를 찾고, 삽입을 위해 해당 자리 이후의 데이터를 한 칸씩 뒤로 밀어내야 함. 선형구조로, 삽입 및 삭제 연산 시 시간복잡도 O(n) 연결리스트 : 구현은 쉬우나, 데이터가 많은 경우에는 모든 노드에 접근하여 비교해야 함. 선형구조로, 삽입 및 삭제 연산 시 시간복잡도 O(n) 힙 : 우선순위 큐를 위해 고안된 이진트리의 일종 힙 우선순위 큐의 구현체 완전 이진 트리 형태로, 이진 탐색 트리와 달리 중복값 허용 부모 노드는 자식 노드보다 항상 우선..

트리(Tree) - 이진 탐색 트리(Binary Search Tree)

트리 비선형구조(선형구조(스택, 큐 등)는 데이터의 삽입 및 출력 등에, 비선형구조는 표현에 초점을 둠) 계층 모델 사이클 없음 모든 자식 노드는 하나의 부모 노드만 가짐 관련 용어 노드(node) : 데이터를 구성하고 있는 각 요소 루트 노드(root node) : 트리 구조에서 최상위 노드 단말 노드(leaf node) : 자식 노드가 없는 노드 간선(ddge) : 노드와 노드를 연결하는 선. 노드가 n개인 트리의 간선 개수는 n-1개 서브트리(sub tree) : 트리에 속하는 트리 형제(sibiling) : 같은 부모를 가지는 노드 레벨(level) : 트리의 각 층, 루트 노드로부터 얼마나 떨어져 있는지에 대한 값으로, 루트 노드의 레벨은 0 차수(degree) : 노드가 갖는 자식의 수 깊이(..

정렬(Sorting)

in-place : 배열 내부에서 정렬 진행하므로, 추가 공간이 필요 없음(반대의 경우는 별도 저장공간을 필요로 함) 안정 정렬(stable) : 동일한 값의 요소가 정렬 이후에도 자리를 유지함 버블정렬(Bubble Sort) 시간복잡도 : O(n^2) 중복된 값이 있을 경우, 정렬 과정을 거쳐도 그 순서가 유지됨 사이클 ([0] ~ [4] 까지 있는 배열인 경우) 인접한 두 요소를 비교, 사이클을 한 번 돌 때마다 배열 우측 끝에 가장 큰 요소가 배치됨 첫 번째 : [0]과 [1] 비교하여 정렬 > [1]과 [2] 비교하여 정렬 > [2]와 [1] 비교하여 정렬 > [3]과 [4] 비교하여 정렬 두 번째 : [0]과 [1] 비교하여 정렬 > [1]과 [2] 비교하여 정렬 > [2]와 [3] 비교하여 정..

사용자 정의 타입 정렬 (Comparable, Comparator)

사용자 정의 타입이 들어간 List를 정렬하고자 할 때 Comparable과 Comparator 두 인터페이스를 활용할 수 있음. Comparable, Comparator의 차이점 Comparable Comparator 구현부 클래스 내부 클래스 외부 비교대상 자기자신 vs 매개변수 매개변수1 vs 매개변수2 사용 상황 객체에 구현되어 있는 compareTo() 메소드가 구현된 대로 정렬됨. 즉, 한 가지 기본 정렬규칙을 설정하고자 할 때 사용 클래스의 기본 정렬 규칙 외에 다른 정렬을 원할 때 사용 Comparable, Comparator의 공통점 return 타입 양수, 0, 음수 양수 : 변수1 ..

JAVA 2022.05.19