일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 1806 백준
- 이진 탐색
- 2096 파이썬
- Jetpack Room
- 자료구조
- 백준 1644
- 백준 10819
- 1003 파이썬
- 백준 2096
- android hilt
- 5582 파이썬
- 1753 파이썬
- java
- 6588 파이썬
- Android mvp
- Android Room
- 1806 투포인터
- 코루틴 플로우
- 5582 DP
- git local remote
- flow buffering
- Coroutine Flow
- 10819 파이썬
- 안드로이드 hilt
- 1644 파이썬
- 투포인터 알고리즘
- 백준 5582
- 1806 파이썬
- 자바
- 1753 다익스트라
- Today
- Total
목록전체 글 (99)
Gemstone's Devlog

다음은 16진수를 2진수로 변환하는 예제이다. 먼저 변환하고자 하는 16진수를 배열 hex에 나열한다. 16진수에는 A~F까지 6개의 문자가 포함되므로 char 배열로 처리하였다. 그리고 문자열 배열 binary에는 이진수 '0000'부터 '1111' (16진수로 0~F)까지 모두 16개의 값을 문자열로 저장하였다. for문을 이용해서 배열 hex에 저장된 문자를 하나씩 읽어서 그에 해당하는 이진수 표현을 배열 binary에서 얻어 result에 덧붙이고 그 결과를 화면에 출력한다. 참고로 자바에서 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다. String클래스는 char배열에 기능(메서드)을..

길이가 45인 배열에 1부터 45까지의 값을 담은 다음, 반복문을 이용해서 배열의 첫 번째 값과 random( )에 의해서 결정된 임의의 위치에 있는 값과 자리를 바꾸는 것을 6번 반복한다. 이것은 마치 1부터 45까지의 번호가 쓰인 카드를 잘 섞은 다음 맨 위의 6장을 꺼내는 것과 같다고 할 수 있다.

배열의 복사는 for문보다 System.arraycopy( )를 사용하는 것이 효율적이다. 기존 배열의 복사에 사용된 for문을 arraycopy( )로 바꾸면 다음과 같다. for (int i = 0; i < num.length; i++) { newNum[i] = num[i]; } ↓ System.arraycopy(num, 0, newNum, 0, num.length); num[0] 에서 newNum[0]으로 num.length개의 데이터를 복사 즉, 배열 num의 내용을 배열 newNum으로, 배열 num의 첫 번째 요소(num[0])부터 시작해서 num.length개의 데이터를 newNum의 첫 번째 요소(newNum[0])에 복사한다. 이때 복사하려는 배열의 위치가 적절하지 못하여 복사하려는 내용..
>> 노드 서버의 장단점 장점 단점 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함 싱글 스레드라서 CPU 코어를 하나만 사용함 I/O 작업이 많은 서버로 적합 CPU 작업이 많은 서버로는 부적합 멀티 스레드 방식보다 쉬움 하나뿐인 스레드가 멈추지 않도록 관리해야 함 웹 서버가 내장되어 있음 서버 규모가 커졌을 때 서버를 관리하기 어려움 자바스크립트를 사용함 어중간한 성능 JSON 형식과 호환하기 쉬움 >> CPU 작업을 위해 AWS Lambda나 Google Cloud Functions 같은 별도 서비스 사용 >> 페이팔, 넷플릭스, 나사, 월마트, 링크드인, 우버 등에서 메인 또는 서브 서버로 사용 서버 외의 노드 >> 자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지 않음 >> 웹, 모바일..

"원반은 한 번에 하나씩만 옮길 수 있습니다. 그리고 옮기는 과정에서 작은 원반의 위에 큰 원반이 올려져서는 안됩니다." 다음과 같은 제약조건을 만족시키기 위해 막대가 두 개가 아닌 세 개가 존재해야 한다. 하노이 타워 문제의 해결 막대 A에 꽂혀있는 원반 n개를 막대 C로 옮기는 과정은 다음과 같이 재귀적으로 구성이 된다. 1. 작은 원반 n-1개를(맨 아래의 원반을 제외한 나머지 원반을) A에서 B로 이동 2. 큰 원반(맨 아래의 원반) 1개를 A에서 C로 이동 3. 작은 원반(위의 1단계에서 옮겨진 원반) n-1개를 B에서 C로 이동 위의 결론을 코드로 옮겨보면, // from에 꽂혀있는 num개의 원반을 by를 거쳐서 to로 이동 void HanoiTowerMove(int num, char fro..

#include int BSearchRecur(int ar[], int first, int last, int target) { int mid; if (first > last) // 재귀함수의 탈출 조건 return -1; // -1의 반환은 탐색의 실패를 의미 mid = (first + last) / 2; // 탐색대상의 중앙을 찾는다. if (ar[mid] == target) return mid; // 탐색된 타겟의 인덱스 값 반환 else if (target < ar[mid]) return BSearchRecur(ar, first, mid - 1, target); else return BSearchRecur(ar, mid + 1, last, target); } int main(void) { int a..

순차 탐색 알고리즘 : O(n) 의 알고리즘을 이진 탐색 알고리즘 : O(logn) 의 알고리즘으로 개선시키는 것이 직접 연산횟수의 비교를 통해서 도대체 왜? 약간의 개선이 아닌 혁신적인 성능의 개선으로 간주되는지 알아보자. 비교를 위한 실험의 원칙은 다음과 같다. 1. 최악의 경우를 대상으로 비교하는 것이 목적이니 탐색의 실패를 유도한다. 2. 탐색의 실패가 결정되기까지 몇 번의 비교연산이 진행되는지를 센다. 3. 데이터의 수는 500, 5000, 50000일 때를 기준으로 각각 실험을 진행한다. #include int BSearch(int ar[], int len, int target) { int first = 0; int last = len - 1; int mid; int opCount = 0; /..
import java.util.*; class FlowEx { public static void main(String[] args) { int menu = 0, num = 0; Scanner scanner = new Scanner(System.in); outer: while(true) { System.out.println("(1) square"); System.out.println("(2) square root"); System.out.println("(3) log"); System.out.println("원하는 메뉴(1~3)를 선택하세요.(종료:0)>"); String tmp = scanner.nextLine(); // 화면에서 입력받은 내용을 tmp에 저장 menu = Integer.parseInt(..
JDK 1.5부터 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for문의 새로운 문법이 추가되었다. for( 타입 변수명 : 배열 또는 컬렉션) { // 반복할 문장 } 위의 문장에서 타입은 배열 또는 컬렉션의 요소의 타입이어야 한다. 배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장된다. 그리고 반복문의 괄호 { } 내에서는 이 변수를 사용해서 코드를 작성한다. int[] arr = {10, 20, 30, 40, 50}; 배열 arr을 위와 같이 선언했을 때, 이 배열의 모든 요소를 출력하는 for문은 아래와 같다. // 일반적인 for문 for(int i = 0; i < arr.length; i++) { System.out.prin..