본문 바로가기

전체 글

(611)
Batch Processing(배치 프로그램) 일괄 처리(batch processing)란 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식을 뜻한다. 초기의 일괄처리 방식은 사용자와 상호작용하는 것이 불가능했지만, 운영 체제가 발전함에 따라 프로그램 입출력을 통해 상호작용하는 것이 가능해졌다. 일괄 처리는 1950년대 전자 컴퓨팅 초기 시절 이후 메인프레임 컴퓨터와 함께하고 있다. 여기서 중요한 것은 바로 일괄처리 입니다. 개별적으로 어떤 요청이 있을 때마다 실시간으로 통신하는 것이 아닌 한꺼번에 일괄적으로 대량 건을 처리하는 것입니다. 특히 배치는 보통 정해진 특정한 시간에 실행됩니다. 1. 대량건의 데이타를 처리한다. 2. 특정 시간에 실행된다. 3. 일괄적으로 처리한다. S보험회사의 대표인 중앙처리시스템이 대표로 S보험회사가 보유하..
공부하자 문제 - 정답 참조 문제 - 스킵함 문제 - 풀었지만 미완성 입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953,11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 별찍기 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992 28문제 DP - 1463, 11726, 11727, 9095, 10844, 11057, 2193, 9465, 2156, 11053, 11055, 11722, 11054, 1912, 2579, 1699, 2133, 9461, 2225, 2011, 11052 2751, 11650, 11651, 10814..
[C/C++] puts와 printf puts는 문자열 만 표시하는 데 사용됩니다. puts()는 const char * 출력에 특화된 함수 printf는 정수, 부동 소수점, 문자, 16 진수 값 및 문자열을 표시하는 데 사용됩니다. string1 = "apple" puts를 사용하여 표시 : puts (string1); printf를 사용하여 표시 : printf ( "% s", string1); 문자열로 작업 할 때는 printf보다 puts를 선호하지만 printf도 사용할 수 있습니다.
에라토스테니스의 체 에라토스테네스의 체 : 범위에서 합성수를 지우는 방식으로 소수를 찾는 방법 체크할 때, 모든 수를 다 돌면서 체크할 필요 없이 체크 할 배수만큼만 반복문을 돌게하는 것이다. 그리고, 이미 0으로 체크되어버린 수의 배수는 확인하지 않는다. (왜냐면, 체크된 수의 배수들도 이미 다 체크가 되어있기 때문이다) [C++] 소수 구하기 최적의 알고리즘 (2) - 에라토스테네스의 체 소수 구하기 최적의 알고리즘 1편에서 (http://marobiana.tistory.com/89) 주어진 수보다 작은 수의 소수들로 나누는게 성능이 좋다고 했었는데, 그것보다 더 좋은 알고리즘을 찾아냈다.ㅋㅋ 이것보다 �� marobiana.tistory.com
Merge Sort 시간 복잡도 T(Divide) = 0 이다. 진짜야. Divide에 시간이 안 걸린다는 뜻이다. 지난번 탐색알고리즘에서는 탐색하는 과정에서 비교연산을 해야하기때문에 그냥 직접적으로 S[0] 부터 S[n/2] 까지, S[n/2+ 1]부터 S[n]까지 식으로 해당 인덱스만 기억하면 되는 것이다. 물론 코드로 이렇게 인덱스를 바로 기억하도록 짜려면 상당히 어려울 것이지만... 엄밀히는 Copy는 반드시 필요한 과정은 아니기 때문에 시간복잡도 분석에서 제외된다. T(Solve) = 2 * T(n/2) 이 맞다. 왼쪽, 오른쪽 자른 놈들을 다시 해결하는데 걸리는 시간을 계산하면 되기때문에 각각 T(n/2)(왼쪽) + T(n/2)(오른쪽) 을 더하면 2 * T(n/2)이 되는 것이다. ​ T(Combine) = n - 1 이다..
swp(스왑파일) 생성 오류 rm 사용해서 없앤다. [Linux] 리눅스 vi 에디터 스왑파일(swp) 생성시 해결방법 vi 에디터 스왑파일 생성시 해결방법 vi 에디터 또는 vim 에디터를 사용하다가 파일을 실행하는 경우 다음과 같은 경고를 마주하게 될 때가 있습니다. (여기서는 한국어 버전 리눅스를 사용했는데 dololak.tistory.com
[JAVA] StringTokenizer 구분자 여러개 JAVA split, StringTokenizer 다수의 구분자 사용 구분자 여러개 사용하기 조건문에 처럼 |(shift + \, OR) 를 쓰니까 간단하게 된다 실습하면서 split과 StringTokenizer의 차이도 알게되었당 String str = "1@2#3@4&&5"; String aa[] = str.split("#|@|&"); Sys.. secr.tistory.com
[JAVA] String to int, int to String [JAVA] String to int, int to String 형변환 자바(JAVA) 형 변환(String과 int) Strinig to int String from = "123"; int to = Integer.parseInt(from); int to String int from = 123; String to = Integer.toString(from); nota.tistory.com
[JAVA] Scanner.useDelimiter java.util.Scanner 클래스의 useDelimiter 메서드 Scanner는 정규식 표현을 이용한 라인단위의 검색을 지원하며 구분자(delimiter)에도 정규식 표현을 사용할 수 있어서 복잡한 형태의 구분자도 처리가 가능하다. [스캐너 예제] 자바의 정석 Chapter 09 - velog.io
[Intellij] 단축키 Intellij의 모든 단축키를 알고 싶다면 "Ctrl + J"를 누르십시오. 모든 바로 가기가 표시됩니다. System.out.println ()의 경우 "sout"을 입력하고 "Tab"키를 누릅니다. 설정 (기본적으로 Alt + Ctrl + S)을 열고 라이브 템플릿을 검색하십시오.
[JAVA] Iterator [Java] 자바 배열 전체 출력하는 5가지 방법 (Arraylist이용) : for문, iterator 사용 배열을 전체 보는 5가지 방법을 정리해 봅니다. For Loop (for 문) Advanced For Loop (상급 for 문) Iterator While Loop Collections’s stream() util (Java8) 이와 같이 5가지 방법이 있습니다. 이 다섯가지.. farcanada.tistory.com
[JAVA] 파일입출력 원리 1. 파일 객체를 만든다. 2. 해당 파일을 열어 읽는다. (+읽은 내용 알아서 처리, 어디다 쓰든지 문자열을 바꾸던지 뭐 맘대로 하면 된다.) 3. 파일을 닫는다. 자바 파일 입출력 (txt파일 한 문자씩, 한 줄씩, 한 번에 읽기) 자바 파일 입출력 원리 1. 파일 객체를 만든다. 2. 해당 파일을 열어 읽는다. (+읽은 내용 알아서 처리, 어디다 쓰든지 문자열을 바꾸던지 뭐 맘대로 하면 된다.) 3. 파일을 닫는다. 1) 한 문자씩 읽�� jeong-pro.tistory.com
[JAVA] 배열 길이
[JAVA] 배열 선언
[JAVA] static 1. static 정리 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성됩니다. 객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받습니다. 하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게 되면 시스템의 퍼포먼스에 악영향을 주게 됩니다. [ Static 변수 특징 ] Static 변수는 클래스 변수이다. 객체를 생성하지 않고도 Static 자원에 접근이 가능하다..
JAVA 운영체제에 독립적 운영체제에 독립적이다. 자바 언어가 나오기 전까지 기존의 언어(Programing Language)는 한 운영체제(Window, Linux, Macintosh) 등의 운영체제에 적용하기 위해 많은 노력이 필요했었다. 자바 언어가 나오면서부터 이러한 적용하기 위한 노력들이 줄어들었다. 그 이유는 뭐였을까? 바로 애뮬레이터인 자바가상머신(JVM)을 통해서 가능해졌다. [[기존 언어]] [[운영체제, 하드웨어]] [[자바 언어]] [[JVM]] [[운영체제, 하드웨어]] 기존 언어는 운영체제와 하드웨어 등이 이해 할 수 있도록 각각 운영체제에 맞는 변환과정을 거쳐야 했음 (종속적) 자바 언어는 운영체제와 하드웨어가 아닌 JVM 하고만 통신함, 응용 프로그램으로부터 전달받은 내용..
JVM( Java Virtual Machine ) 자바 가상 머신의 구성 자바 가상 머신(JVM)은 다음과 같이 구성됩니다. 1. 자바 인터프리터(interpreter) 2. 클래스 로더(class loader) 3. JIT 컴파일러(Just-In-Time compiler) 4. 가비지 컬렉터(garbage collector) 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할을 하는 것이 자바 인터프리터(interpreter)입니다. 자바는 동적으로 클래스를 읽어오므로, 프로그램이 실행 중인 런타임에서야 모든 코드가 자바 가상 머신과 연결됩니다. 이렇게 동적으로 클래스를 로딩해주는 역할을 하는 것이 바로 클래스 로더(class loader)입니다. JIT 컴파일러(Just-In-Time compiler)란 프로그램이 실행 중인 런타임에..
JAVA 프로그램의 실행 과정 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있습니다 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 자바 컴파일러(Java compiler) 자바 컴파일러는 자바를 가지고 작성한 자바 소스 코드를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드로 변환합니다. 자바 컴파일러는 자바를 설치하면 javac.exe라는 실행 파일 형태로 설치됩니다. 자바 바이트 코드(Java bytecode) 자바 바이트 코드(Java bytecode)란 자바 가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미합니다. 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있습니다..
IDE (Integrated Development Environment) 란 통합 개발 환경(IDE)은 Integrated Development Environment의 줄인말입니다. 단어의 뜻 그대로 통합된 개발 환경입니다. 쉽게 생각해서 그냥 개발환경입니다. 개발을 하면서 사용되는 도구들의 집합이라고 생각하시면 됩니다. 그러면 과연 무엇이 통합되어 있을까요? 통합 개발 환경에 따라 다르지만 보통은 개발하는데 필요한 편집기 언어팩 syntax highlighting git 연동 터미널 각종 테마 기타 플러그인 등 많은 것들을 포함하고 있습니다. 그리고 많은 IDE들이 플러그인을 개발할 수 있도록 열어 두어, 많은 개발자들이 다양한 플러그인을 만들어서 사용할 수 있도록 하고 있습니다.
JDK와 SDK 차이점 JDK란 "Java Development Kit (자바 개발 도구)"이라는 의미이고, SDK란 "Software Development Kit (소프트웨어 개발 도구)"의 약자입니다. 자바만 개발할 수 있는 SDK를 JDK라고 합니다. 마이크로소프트(MS) 등의 다른 회사에서도 SDK라는 이름으로 개발 도구들을 많이 발표합니다. 그런데 현재 JDK 는 대부분 "Java SE 개발 도구"를 의미합니다. "Java EE" 개발도구는 SDK라고 부르더군요. 자바 초보자라면 "Java SE 개발 도구"를 다운받아서 설치하면 됩니다. 결국 자바프로그래밍에서의 JDK와 SDK는, 표현의 차이만 있을 뿐 서로 동일한 것이라고 볼 수 있습니다.
[C/C++] 수학 관련 함수
[관계기반] 숫자 뒤집기(p.18) 방법1 방법2 방법3
관계 기반 알고리즘 설계 탐색기반의 설계방법은 컴퓨터의 빠른 연산속도를 이용하여 짧은 시간에 가능한 해의 집합을 탐색하면서 최적 해를 구하는 기술적인 방법 관계기반 설계방법은 해를 구하는 행위를 하나의 함수로 표현하고 이 함수들의 관계를 이용하여 해를 구하는 아주 효율적인 방법이다. 관계기반 설계를 적용하기 위해서는 문제의 정의 및 상태를 함수로 정의하고 이 함수들 간의 관계를 점화식 혹은 이와 유사한 형태로 표현할 수 있어야 한다. 관계기반 설계에서는 수학적 귀납법과 점화식 등의 표현이 기반이 되므로 이번 단원에서는 수학적 귀납법에 대해서 간단히 살펴보고 관계기반으로 알고리즘을 설계하는 방법에 대해서 다룬다.
[DFS] 돌다리 건너기(p.239) f(악마/ 천사의 돌다리, 시작 인덱스, 두루마리 인덱스) 1 과 2 라인을 선택해서 시작점을 정한다. 두루마리에 있는 값과 일치한다면 다음 인덱스로 넘어간다. 마지막 점에 도착하였다면 return 1
[DFS] 좋은 수열(p.226) (a==b ? false:i==b); a=b라면 false a!=b 라면 i==b에 관한 참, 거짓 여부를 return한다. 이 방법보다 조금 더 효율적인 방법을 생각해볼 수 있다. 만들어진 수열의 좋은 수열 여부를 판단할 때, 새로 붙은 수를 포함하는 것으로만 평가해 보는 것이다. 이 때 좋은 수열을 판단하는 방법은 다음과 같다.
삼항연산자
[Linux] 동적 라이브러리 만들기 라이브러리로 쓸 함수가 포함된 소스 두 개 작성 공용으로 각각 컴파일 두개의 오브젝트를 하나의 라이브러리로 통합 링크파일 생성 라이브러리 등록 라이브러리의 함수를 사용 하는 프로그램 소스 작성 라이브러리를 사용하도록 컴파일 실행 PIC(Position Independent Code) 비 PIC 공유 라이브러리를 작성할 수는 있지만 실행할 때 재배치에 시간이 소요되고 다른 프로세스와 코드(.text)를 공유할 수 없는 커다란 단점이 있다. 따라서 공유 라이브러리를 작성할 때는 .c 파일을 PIC로 컴파일 하도록 한다. [Hack #20] 공유 라이브러리에 PIC를 사용하는 이유 ♧ 통상 GNU/리눅스의 공유 라이브러리를 만들 때는 각각의 .C 파일을 PIC(Position Independent Code)가..
정적 라이브러리 만들기 라이브러리로 쓸 함수가 포함된 파일 두개 만들기 컴파일 해서 오브젝트로 만들기 두개의 오브젝트를 하나의 라이브러리로 합치기 라이브러리를 사용할 메인프로그램 코딩 라이브러리를 포함해서 컴파일 동작 실행 1. 라이브러리로 쓸 함수가 포함된 파일 두개 만들기 2. 컴파일 해서 오브젝트로 만들기 #gcc -c file1.c file2.c c 옵션은 오브젝트 파일을 만드는 옵션이다. 오브젝트 파일은 .o 확장 자를 가지며, elf 바이너리 구조이다. 결과물 : file1.o file2.o 3. 두개의 오브젝트를 하나의 라이브러리로 합치기 #ar rscv libstatic.a file1.o file2.o 두개의 오브젝트 파일을 libstatic.a 파일로 합친다. ar은 tar 과 비슷하며, archive 를 뜻한..
동적, 정적 라이브러리 개념설명과 gcc에서 사용하기 유연성 부족 문제에 의해서 정적라이브러리를 지양(피하는)한다. 유연성을 올리기 위해서 동적 라이브러리를 이용한다 동적링크라이브러리(Dynamic Link Library) - .dll 동적라이브러리는 실행시간에 실행 프로세스 주소 공간으로 로드됩니다. 정적라이브러리처럼 컴파일 시에 함수가 연결되는 방식이 아닌 런타임시에 함수가 실행파일에 연결된다. 실행파일에는 호출할 함수의 정보만 포함되고 실제 함수 코드는 복사되지 않으므로 실행 파일의 크기가 작아진다. 하지만 실행 파일은 함수에 대한 정보만 가지고 있을 뿐 실제 코드를 가지고 있지 않기 때문에 프로그램 실행시에는 dll 파일이 항상 존재해야 한다. 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부른다 즉 정적 라이브러리는 ..
[CUDA] 프로세서 CUDA Thread Hierachy와 CUDA Processor간의 관계 CUDA Processor와 CUDA의 논리적인 구조는 다음과 같은 상관 관계가 있습니다. CUDA Architecture CUDA Logical Architecture CUDA Processor CUDA Kernel/Grid CUDA Multi-Processor 복수의 CUDA Block CUDA Core CUDA Thread CUDA Thread Index 구성 CUDA Kernel을 개발하실때 주지해야 하는 사항은, 여러분이 짜는 CUDA 코드는 병렬적으로 처리되는 코드이지만, CUDA Thread 입장에서는 오직 하나의 Thread만이 동작하는 코드입니다. 따라서 CUDA Thread는 고유의 Index를 갖고 있으며, 이..