전체 글 395

[C 자료구조] Stack - Simple Text Editor

0) 제목Hackerrank 의 Stacks 부분의 Simple Test Editor 문제입니다. (simple하지 않았습니다. 생각을 많이했어야 하는 문제였습니다 저한테는..)C언어를 이용하여 풀었습니다.1) 문제설명Quary의 갯수 q를 받고, q만큼의 쿼리(line)을 받습니다.1입력시 append.2입력시 delete.3입력시 print4입력시 undo입니다.append는 문자열 str 을 받고, 기존에 문자열에 새 문자열을 붙입니다.delete는 int 타입의 변수 k를 받는데, 문자열의 맨 끝에서부터 k 만큼 문자를 삭제합니다.print는 int 타입의 변수 k를 받는데, 현재 문자열에서 k번째 인자를 출력합니다.undo는 인자로 받는것은 없고, 바로 전에 했던 append나 delete를 실..

[C언어] 배열포인터, 포인터배열 정리 (pointer)

안녕하세요! BlockDMask 입니다 오늘은 많이들 햇갈려 하는 array pointer pointer array pointer pointer array array pointer. C언어의 포인터 개념과 배열 개념을 조금은 알고 계셔야 내용을 이해할 수 있을 것 입니다. 포인터배열, 배열포인터를 간단하게 정리해보겠습니다. 우리나라말은 끝까지 들어보라고 하지 않씁니까. 뒤에있는게 중요하다는 뜻이죠. 포인터"배열" / 배열"포인터" 시작하겠습니다.이해를 돕기위해 직접 그림도 그렸습니다. 손그림이었는데 이번에 ppt로 바꾸어봤습니다.훨씬 이해하기 편하지 않을까 싶습니다. 1. 포인터 배열이란. 2. 배열 포인터란. 1. 포인터 배열이란 ▶ 포인터 들의 배열이다. 배열의 요소가 포인터들로 이루어져 있다. ▶ ..

[C++] 예외처리 (Exception Handling, try catch)

1) "예외 상황" 과 "예외 처리" 란.예외 상황 : 예외(Exception)는 언어상의 문법적인 오류가 아니라 내가 의도한, 구현한 프로그램의 논리에 맞지 않는 상황을 말합니다. 이러한 예외 상황에서, 특별한 처리를 하는 것을 예외처리(Exception Handling)이라 합니다.ex) 나눗셈을 할때 나누는 수 가 0으로 입력되는 경우를 "예외 상황" 이라 하고, 이에 대해 다시 입력을 받거나 프로그램을 종료하는 방법을 정의해주는 것을 "예외 처리"라고 할 수 있습니다. 2) "예외 처리"를 위한 방법.사실 우리는 조건문(if)를 통해서 이전부터 예외처리를 해왔었습니다. 하지만, C++언어에서 예외 처리를 위해 제공하는 메커니즘이 존재합니다. 조건문(if)를 통해서 예외 처리하는 방법도 좋지만, 이..

<개인공부>/[C++] 2017.07.14 (2)

[유클리드 알고리즘] GCD 최대공약수 (반복문, 재귀)

안녕하세요. BlockDMask 입니다. 유클리드 알고리즘은 사실 알고리즘 카테고리를 새로 만들어서 작성해야하는데, 조만간에 이사하도록 하겠습니다. 1) "유클리드 알고리즘"이란.유클리드 알고리즘은 주어진 두 수 사이에 존재하는 최대공약수(GCD)를 구하는 알고리즘 입니다. GCD - greatest common divisor 2) "유클리드 알고리즘" 원리.임의의 두 자연수 a, b가 주어졌을때. 둘중 큰 값이 a라고 가정해보겠습니다.a를 b로 나눈 나머지를 n 이라고 하면 (a%b = n)n이 0일때, b가 최대 공약수(GCD)입니다.만약 n이 0이 아니라면, a에 b값을 다시 넣고 n를 b에 대입 한 후 다시 위에 step2부터 반복하면 됩니다.3) "유클리드 알고리즘" 접근방법.두가지 접근 방법이..

[C 자료구조] Array - Left Rotation

0) 제목Hackerrank 의 Arrays 부분의 Left Rotation 문제입니다.왼쪽으로 배열을 옮긴다! 이런 문제입니다.C언어를 이용하여 풀었습니다. 1) 문제설명배열이 주어지면 그 배열을 왼쪽으로 rotation 시키는 문제입니다. 예를들어 배열 {1, 2, 3, 4, 5, 6} 이 주어지고, rotation이 3이 나오게 되면출력을 {4, 5, 6, 1, 2, 3} 순으로 출력하면 됩니다.처음에 배열의 길이와, rotation의 숫자를 입력 받고배열의 길이만큼 데이터를 입력 받는 형태입니다.2) 풀이과정자료구조 항목의 배열 문제 이지만, 재미있는 알고리즘 문제라고 생각합니다.처음에는 무식하게 "배열을 rotation 숫자만큼 이동하면 되겠다"라고 생각했는데, 잘 읽어보니까 "출력"만 rota..

[C언어 게임] 테트리스 게임 (Tetris Game with C)

안녕하세요. BlockDMask입니다.설명하기 전에, 메이킹 영상먼저 보겠습니다.초기 배경을 만들고 하나씩 수정을 하는 모습을 동영상으로 만들었습니다.영상의 마지막에(1:23)에는 V1.0 플레이 영상이 첨부 되어있습니다. 1. Intro이름 : myTetris game (테트리스 게임) 요약 : C언어로 만든 테트리스 게임입니다. 콘솔 환경에서만 돌아갑니다. (.exe파일) 기간 : 2017년 05월 26일, 27일, 29일, 30일 (4일) (평일에는 퇴근하고 개발을 하였고, 주말에는 여친 안만날때 틈틈히 했습니다.) 인원 : 본인 한명 실행파일(exe) : 글 하단에 다운로드 부분을 클릭해주세요! 영상 : 유튜브 X + boundaryArr[1] +1] != EMPTY) ||(boundaryArr[..

[윈도우 단축키] 윈도우, 실행창 단축키 정리

안녕하세요. BlockDMask 입니다. 오늘은 window 단축키에 대해서 아는만큼 써보려고 합니다.앞으로 더 알게된다면 추가 작성하겠습니다.또한, 추가 되었으면 하는 내용이 있으면 댓글 달아주시면 추가하겠습니다. 작업관리자Ctrl + Shift + EscCtrl + Alt + delete -> T모든 창 내리기/올리기win + D윈도우 탐색기 실행 (파일 열기)win + E화면 잠금win + L실행창 명령어익숙해지면 정말 편합니다. 바탕화면에서 Win + R 을 누르면 아래 실행창이 생기게 됩니다. 목록이름 명령어 계산기 calc 메모장 notepad 제어판 control 프로그램 추가/제거 appwiz.cpl 원격 데스크톱 연결 mstsc 명령 프롬프르 (cmd.exe) cmd 레지스트리 편집기 r..

[한글 단축키] 한글 단축키 정리 (꼭 필요한 것만 정리)

안녕하세요, 오늘은 제가 직접 문서를 작성할때 사용하는 한글 단축키에 대해서 적어 보도록 하겠습니다. 꼭 필요하다고 생각하는 것만 추려서 작성했습니다. 목차가 있으니 해당 항목으로 이동하셔서 보는것도 좋은 방법인 듯 싶습니다. 1. 글자 크기2. 글꼴 및 글자 속성 및 글자 속성 복사3. 편집 용지 설정 (용지 크기, 가로형, 세로형)4. 표 만들기5. 표 크기 변경하기6. 표 가로세로 간격 맞추기7. 표의 선, 배경 설정8. 표 나누기, 채우기, 병합하기9. 표 칸, 줄 추가 및 셀 삭제. 1. 글자 크기 1) 글자 크기 키우기(1pt 씩 증가) : Alt + Shift + E 2) 글자 크기 줄이기(1pt 씩 감소) : Alt + Shift + R 사용방법그림1) - [왼쪽] : 특정 글자만 키우고 ..

[C++] template(템플릿)에 관하여 2 (클래스 템플릿, 템플릿 특수화)

안녕하세요. BlockDMask 입니다.오늘은 C++ template(템플릿)에 관하여 두번째 시간입니다. 클래스 템플레이트와 템플레이트 특수화에 대해서 배울것 입니다.혹시 template이 무엇인지 다시한번 복습이 필요하신분들은. [바로가기] 1) 템플릿 특수화 (template specialization) 템플릿(template)을 사용할때, 특수한 자료형에 대해서는 다른 처리를 하고 싶을때 사용합니다. 사용 방법은 아래처럼 template 가 정의되어있을때, 같은 함수에 대해서, 재정의?하고싶은 데이터 타입을 이용해서 아래 주황 글씨처럼 재정의 하면됩니다. T를 없애고 넣고싶은 데이터 타입을 넣습니다. 123456789101112template T sum(T a, T b){ return a + b;..

[C 자료구조] Tree - Is This a Binary Search Tree?

0) 제목Hackerrank 의 Tree 부분의 Is This a Binary Search Tree? 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명이진트리(Binary Tree)의 root 노드의 포인터가 파라미터로 주어집니다.주어진 트리가 이진트리(Binary Tree) 인지 이진탐색트리(Binary Search Tree) 인지 검사하는 문제입니다.만약 이진탐색트리라면 true를 아니라면 false를 리턴하는 문제입니다.2) 풀이과정처음에는 단순하게 이진트리 이므로, 재귀함수를 이용하여 각 노드마다 이진탐색 트리의 조건을 만족하는지 체크하면서 함수를 호출하는 방식을 시도했었습니다.그러다가 이진 탐색 트리의 특성을 곰곰히 생각하면서, 다른식으로 접근해보려고 시도했습니다.이진 탐색트리의 특성은 "왼..

[C++] template(템플릿) 에 관하여 1 (템플릿이란, 함수 템플릿)

안녕하세요 BlockDMask 입니다.오늘은 C++에서 자료형을 마음대로 가지고 놀 수 있는, template (템플릿) 에 대해 알아보겠습니다. 1) 템플릿(Template) 이란.함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀. 함수 템플릿(Function Template)와 클래스 템플릿(Class Template) 로 나누어집니다.개인적으로 비유를 들자면 펜중에.. 5색펜 이런거 있잖아요. 펜이 한자루 인데. 여러가지 색(자료형)을 우리가 그때그때 쓸 수 있잖아요. template는 여러개의 색(자료형)을 모아놓은 하나의 펜 케이스 그때그때 다른 색(자료형)을 눌러서 사용할 수 있다. 일반 자료형들이 [왼쪽] 펜들 이라고 생각한다면 -> ..

<개인공부>/[C++] 2017.07.11 (14)

[C++] string 클래스 변환(atoi, c_str()) 등 정리

C++에서 string, char *, int 간의 변환에 대해서 알아보겠습니다.(char* -> int 로 바꾸는 것을 보고싶다면, [바로가기])(string -> int 로 바꾸는 것을 보고싶다면, [바로가기])(int -> string 으로 바로 바꾸는 것을 보고싶다면 [바로가기])(C++ string에 대한 총정리가 보고싶다면 [바로가기]) 1) 함수 설명int atoi (const char * str) 헤더파일(C) : 헤더파일(CPP) : 설명 : C style의 문자열을 입력받아서 int (숫자) 타입으로 변환하여 리턴한다.std::string c_str() 반환형이 char * 이므로, 해당하는 string의 첫번재 문자의 주소값(포인터)를 반환합니다. 사용방법은 아래에 나와있습니다. 2)..

<개인공부>/[C++] 2017.07.11 (5)

[C++] string 클래스 정리

C++ string 클래스 함수를 정리해보았습니다이쪽으로오세요~ 리뉴얼한 C++ string 총정리편 [바로가기] 1) 헤더파일using namespace std; 를 추가해주어야 합니다.2) 여러 함수 및 초기화 방법들생성1 : string str1("BlockDMask");생성2 : string str1; str1 = "BlockDMask";생성3 : string str2(str1); //다른 string 객체 인자로. 길이1 : str.length();길이2 : str.size(); 한 문자 반환 받기 : str.at(n); //n번째 있는 문자 반환, 배열이라고 생각하면 됨. 0부터 시작. //str[n] 문자열 처럼도 사용가능.문자열 찾기 : str.find("문자열"); //찾는 문자열의 첫번..

[C++] string 클래스 만들어보기.

공부를 하기 위해 String class 을 직접 만들어 보았습니다.0) 설명 (Intro)C++을 학습하다가 String 클래스를 직접 만들어 보는 실습이 있어서 작성하게 되었습니다.char * , 동적할당을 이용하여서 만들었습니다.string s1("문자열") 과 string s1 = "문자열" 을 통하여 문자열을 초기화 및 입력이 가능하도록 하였습니다.또한 string의 덧셈(+), 더하고 대입(+=), 출력(), 비교(==)를 연산자 오버로딩(operator)을 통하여 만들었습니다.1) 코드 (Code) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859..

[C언어] 동적할당 정리1 (malloc, realloc, calloc, free 함수)

1) 함수 종류 및 설명.아래 링크로 가시면 좀더 자세히 나와있습니다. 아래 링크가 이번에 작성한 내용입니다.2018/10/31 - [/[C언어 & C++ 언어]] - [C 언어] 동적할당 정리2 (malloc, free 예제)프로그램 실행 도중에 필요한 메모리 공간을 할당하고 사용 후 해당 공간을 해제하는 것. 헤더파일 : 메모리 할당 함수 - malloc 메모리 할당 및 초기화 - calloc 메모리 추가 할당 - realloc 메모리 해제 함수 - free. 2) 함수 원형 void *malloc(size_t size); 할당받을 메모리 크기를 인자로 받음ex) int * arr = (int *)malloc(sizeof(int) * n); //인자의 갯수가 n개의 배열을 동적할당한다(그만큼의 메모리..