전체 글 86

JVM이란? 객체지향프로그래밍이란?

1. JVM은 Java Virtual Machine의 준말로 자바를 구동하는 환경이다. 자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고, 하드웨어나 운영체제에 따라서 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라서 만들어진 JVM이 알아서 해결한다. 즉 하나의 자바 프로그램을 만들면 어떤 환경(어떤 OS)에서도 실행할 수 있는 환경을 구축하는 것이 바로 JVM의 역할이라고 할 수 있다. 2. 객체지향프로그래밍이란? 객체지향 프로그래밍(Object-Oriented Programming)은 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 여기서 상태는 변수를 의미하고 행위는 메서드를 의미한다. 이 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램..

자바 2022.01.23

문자를 사용한 수 표현, 색을 표현하는 방법

1. 문자를 사용한 수 표현 문자를 전송하기 위해 설계된 Media(Email, HTML)를 통해서 2진 데이터(이미지, 오디오 등)을 보내고 싶다. 그러면 앞에서 배운 아스키코드를 활용하여 2진데이터를 문자들로 인코딩하여 보내면 될까? 1.아스키코드에서 일부 제어문자 (e.g. Line ending)의 경우 시스템 별로 다른 코드값을 갖는다. 2.결정적으로 통신경로가 7비트 데이터만 지원하기 때문에 8비트의 아스키코드가 1비트 잘리는 문제 발생 가능하다. 위와 같은 문제로 2진 데이터들을 ASCII로 그대로 바꿔 데이터를 전달하기에는 위험하다. 그래서 등장하게 된 것이 QP인코딩과 Base64이다. 1-1 QP인코딩 QP인코딩이란 ? 출력 가능하게 변경한 인코딩 (Quoted-Printable enco..

CS 2022.01.21

큐, 스택, Arraylist, Linkedlist란

1. 스택이란 LIFO(Last-in, First-out)의 자료구조. 삽입, 삭제가 항상 위치가 정해져있기 때문에 O(1)이다. 다만 특정 데이터를 찾기 위해서는 순차적으로 검색해나가야하기 때문에 O(n)이다. 2. 큐란 FIFO(First-in, First-out)의 자료구조. 스택과 마찬가지로 삽입, 삭제의 위치가 항상 정해져 있기 떄문에 O(1)이지만 검색은 O(n)이다. 3. Arraylist란? 배열과 거의 유사하다. 하지만 배열과는 다르게 선언할때 크기를 확정 짓지 않아도 된다는 큰 장점이 있다. Arraylist에 값을 하나하나 추가해나갈때마다 메모리가 부족하다면 알아서 확장시키기 때문이다. 배열과 똑같이 index를 통해서 특정 요소 값을 찾을 수 있으므로 검색 속도는 O(1)이다. 하지..

자료구조 2022.01.21

http와 https란?

1. http vs https HTTP는 Hypertext Transfer Protocol의 약자로 HTML을 전송하기 위한 통신 프로토콜(약속, 형식 정도로 이해)을 의미한다. HTTPS의 마지막 s는 Over Secure Socket Layer의 약자로 기존 http방식에 보안을 강화한 방식이다. 기존 http는 데이터를 전송할 때 암호화를 하지 않기 때문에 보안상 결점이 많아 이를 보완하기 위해 등장한 것이다. 이 https는 ssl 프로토콜 위에서 돌아가는 프로토콜이다. (기존 http프로토콜 + ssl프로토콜). 2. SSL = TSL 같은 말이다. 보통 SSL이라고 많이 표현한다. SSL도 http처럼 프로토콜의 일종이다. 3. https를 통한 서버와 클라이언트의 통신 절차 3-1. hand..

2022.01.20

하샤드 수(JAVA)

1. 문제 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 한다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수이다. 자연수 x를 매개변수로 받아 x가 하샤드 수인지 아닌지 검사하는 함수를 만드시오. 2. 제한 x는 1 이상, 10000 이하인 정수입니다. 3. 정답 class Solution { public boolean solution(int x) { int sum = 0; int temp = x; while (temp != 0) { sum += (temp % 10); temp /= 10; } if (x % sum == 0) { return true; } else { return false; } } } 4. 설명 4-1. while..

콜라츠 추측(JAVA)

1. 문제 콜라츠 추측은 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 된다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수를 만드시오. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환하시오. 2. 제한 입력된 수, num은 1 이상 8000000 미만인 정수입니다. 3. 정답 class Solution { public int solution(int num) { int cou..

제일 작은 수 제거하기(JAVA)

1. 문제 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수를 만드시오. 단, 리턴하려는 배열이 빈 배열이면 배열에 -1을 채워 리턴한다. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴한다. 2. 제한 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 3. 정답 class Solution { public int[] solution(int[] arr) { int result; int[] answer; int k = 0; int j = 0; if (arr.length == 1) { answer = new int[1]; answer[0] = -1; return ans..

정수 내림차순으로 배치하기(JAVA)

1. 문제 정수 n을 매개변수로 입력받아 n의 각 자릿수를 내림차순으로 정렬한 새로운 정수를 리턴하시오. 예를들어 n이 118372면 873211을 리턴한다. 2. 제한 n은 1이상 8000000000 이하인 자연수입니다. 3. 정답 import java.util.Arrays; class Solution { public long solution(long n) { long answer = 0; int length = (int)(Math.log10(n) + 1); int[] result = new int[length]; int j = length - 1; int temp; for (int i = 0; i < length; i++) { result[i] = (int)(n % 10); n /= 10; } Arr..

해시맵(Hash Map)이란?

1. 맵이란 무엇인가? 해시맵을 이해하기 위해선 우선 맵을 이해해야한다. 맵은 key와 value값의 구조로 힙영역에 저장되는 객체라고 보면 된다. 2. 해시맵이란? 해시맵은 위의 그림과 같은 구조로 저장된다. key와 value 둘 다 객체들이며 value는 중복될 수 있지만 key는 중복될 수 없습니다. 만일 중복되는 key를 새로 만들경우 기존의 key가 사라지게 된다. key에는 입력한 값을 해싱하여 저장하기 때문에 key값을 찾는데 걸리는 시간이 굉장히 빠르다. 또한 key값에 들어있는 해싱값은 동시에 해당 value값에 대한 주소이기도 하다. 이제 왜 key값이 중복되면 안되는지 이해가 갈 것이다. 3. 구체적인 사용방법 좋은사이트가 있으니 참조하자 [Java] 자바 HashMap 사용법 & ..

자바 2022.01.18