Language 11

[C, C++] 동적 메모리 할당 비교

동적 변수를 생성(동적 메모리 할당)할 때, C와 C++의 차이를 비교해 보겠습니다. 먼저, 변수 선언과 해제 방법은 다음과 같습니다. # C int *arr = (int*)malloc(5 * sizeof(int)); free(arr); # C++ int *arr = new int[5]; delete[] arr; 둘의 차이점은 다음과 같습니다. 1. 문법 C: malloc 함수는 사용할 메모리의 크기를 바이트 단위로 지정하고, 할당된 메모리의 포인터를 반환합니다. C++: new 키워드는 할당할 객체의 자료형과 사이즈를 지정하고, 해당 자료형의 포인터를 반환합니다. 2. 자료형 정보 C: 메모리를 단순히 바이트 단위로 할당하므로 자료형 정보가 없습니다. 따라서 사용자는 할당된 메모리에 대한 자료형 변환을..

Language/C, C++, C# 2023.11.24

[Java] Map 모든 데이터 가져오기

Java의 Map은 key, value로 구성되어있으며, Python의 dictionary와 같습니다. get(key)를 사용하여 value를 가져올 수 있지만 key에 해당하는 value만 가져올 수 있습니다. 코드를 작성하다보면 Map 객체의 모든 데이터가 필요한 경우가 생기기 마련입니다. 본 포스팅은 Map의 모든 데이터를 가져오는 방법을 소개합니다. 흔히 3가지 방법이 존재합니다. Map 객체에는 다음과 같이 데이터를 put() 하였습니다. 1. map.keyset().iterator() keyset()을 이용하여 Set 타입의 객체를 얻고 이것을 Iterator 타입의 객체로 변환하여 데이터를 가져옵니다. public String getMapDataWithIterator() { String re..

Language/Java 2022.01.21

[Java] 자바 정규식 예제

정규식은 스트링을 compareTo() 또는 equals()로 비교하기 어려운 상황에서 특정 패턴으로 비교하기 위해 사용된다. 정규 표현 문법 정규식 설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 문자 [단 ‘'는 넣을 수 없습니다.] * 앞 문자가 0개 이상의 개수가 존재할 수 있습니다. + 앞 문자가 1개 이상의 개수가 존재할 수 있습니다. ? 앞 문자가 없거나 하나 있을 수 있습니다. [] 문자의 집합이나 범위를 표현합니다. -기호를 통해 범위를 나타낼 수 있습니다. ^가 존재하면 not을 나타냅니다. {} 횟수 또는 범위를 나타냅니다. () 괄호안의 문자를 하나의 문자로 인식합니다. | 패턴을 OR 연산을 수행할 때 사용합니다. \s 공백 문자 \S 공백 문자가 아닌 나머지 문자 \w 알파벳이나..

Language/Java 2020.12.07

[Java] 자주 사용하는 스트링 메소드(String Method) 정리

자세한 내용은 아래 문서를 참조해주세요. docs.oracle.com/javase/8/docs/api/java/lang/String.html String (Java Platform SE 8 ) Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum docs.oracle.com 1. charAt(int ind..

Language/Java 2020.12.07

[Java] 프로그램 실행 과정

Java프로그램의 실행에서 컴파일 과정은 다음과 같다. 1. 컴파일러 (Compiler) java 파일(소스 코드)을 class 파일(바이트 코드)로 변환 2. 자바 가상 기계 (JVM : Java Virtual Machine) class 파일을 운영체제에 맞는 기계어로 번역 후 실행 ※ C Language vs Java Language C Java 빌드 결과 exe 생성 (windows 기준) class 생성 실행 OS JVM 플랫폼 의존 종속적 독립적 C언어는 빌드하면 운영체제가 실행할 수 있는 이진 파일을 생성한다. 반면에 Java는 가상 기계가 실행할 수 있는 class 파일을 생성한다. 때문에 C언어는 운영체제가 변경되면 그에 맞게 빌드를 새로 해야하며 운영체제마다 시스템 라이브러리가 다르기 때..

Language/Java 2020.12.07

[C] clock()을 이용한 타자연습기 만들기 (실행시간 측정)

1. clock() 프로그램 실행 후 현재까지 경과된 시간을 ms 단위로 반환 프로그램 실행 시간은 효율성 측정 등 여러 곳에서 사용된다. 이번에는 시간 측정으로 타자 연습기를 구현해봤다. 코드는 아래와 같다. #include #include #include #include #include #define rows 2 #define column 80 int main() { int i, j, k, len, wnum, menu; float t; char str[rows][column] = { "apple is sweet","expensive banana" }; char c[column], name[column]; printf("Input your name : "); gets(name); system("cls"..

Language/C, C++, C# 2020.08.17

[C] Sleep(), system("cls")를 이용한 주사위 굴리기

1. Sleep() 런타임에 프로그램을 일시적으로 대기 상태로 만들기 위한 함수 Sleep(1000); // 1000ms (1초) 동안 프로그램 대기 상태 2. system("cls") 콘솔 화면을 지우는 함수 Linux : clear, Windows : cls 명령어와 같은 기능 위 함수를 이용하여 재밌는 프로그램을 만들어 볼 수 있다. 바로 옛날 메이플 스토리에서 캐릭터 생성 시 필수 관문인 주사위 굴리기를 구현해봤다. 코드는 아래와 같다. #include #include #include #include #include #define SIZE 4 int main() { int i, j, sum, key, value[SIZE]; char p_stat[SIZE][SIZE] = { "STR","DEX","..

Language/C, C++, C# 2020.08.16

[C] 배열과 포인터의 관계

배열 크기가 같은 변수들이 메모리에 순차적으로 할당되어 있는 자료형 로또 프로그램을 만든다고 가정해보자. 우선 7개의 번호를 저장하기 위해 7개의 변수가 필요하다. (num1, num2, ... num7) 만일 7개가 아닌 n개의 값을 저장하려면? n개의 변수를 만들어야 한다. 이렇게 일일이 변수를 만드는 것은 매우 비효율적이다. 여기서 배열의 장점을 알 수 있다. 크기만 정해주면 원하는 만큼의 변수를 쉽게 만들 수 있다. (메모리 크기에 따라 다름) 또한 값들이 메모리에 일련하게 저장되어 배열의 인덱스(offset)로 쉽게 찾아낼 수 있다. 하지만 배열은 정적 할당 변수이기 때문에 크기를 선언시에 지정해야 한다. (이를 극복하기 위해 동적 할당을 이용한 연결 리스트가 있다.) 따라서 지정한 크기보다 데..

Language/C, C++, C# 2020.06.21

[C] 방향키로 printf() 커서 위치 이동 (gotoxy)

MFC(Microsoft Foundation Class Library)를 사용하지 않는다면 C언어를 이용하여 GUI를 구성하는 것은 불가능하다. 바람의 나라 등 2D 게임을 만들 때 캐릭터가 이동하기 위해서는 좌표가 필요한데, CLI 환경에서 2D 게임을 흉내낼 수 있는 gotoxy() 함수에 대해 알아보자. 함수 정의 이름은 gotoxy()가 아니더라도 상관 없음 SetConsoleCursorPosition() : 콘솔 커서 위치 변경 사용법 x, y값에 이동하고자 하는 좌표를 매개변수로 전달 예제를 통해 확인해보자. 소스 코드는 아래와 같다. #include #include #define MAX_X 60 #define MAX_Y 20 void gotoxy(int x, int y) { COORD Pos..

Language/C, C++, C# 2020.06.09

[C] 아스키코드(ASCII)와 유니코드(Unicode)란?

아스키코드 (ASCII) 1960년 미국에서 정의한 알파벳 표준 부호 체계 컴퓨터의 기본 저장 단위인 1byte(=8bit)에서 통신을 위한 1bit(parity bit)를 제외하여 최대 7bit 체계 구성 유니코드 (Unicode) 전 세계의 모든 문자를 일관되게 표현하기 위한 국제 부호 체계 16bit 체계 구성 (아주 희귀한 문자일 경우 최대 21bit까지 사용) 영문 또는 한글을 읽어 크기를 파악해보자. 소스 코드는 아래와 같다. #include int main() { int dec; while (1) { printf("Please enter a value : "); dec = getchar(); if (dec

Language/C, C++, C# 2020.06.09