두 개의 문자열이 같은지 비교하고 싶다면 strcmp, strncmp함수를 사용하면 됩니다. strcmp함수는 비교대상 문자열인 string1 string2이 같은지 비교합니다. strncmp는 문자열을 비교한다는 것에서 일정 길이만큼 비교할 수 있는 옵션이 추가된 함수입니다. 위의 두 함수는 널로 끝나는 스트링에서 작동합니다. 그렇기에 함수에 대한 스트링 인수는 스트링 끝을 나타내는 널 문자(\0)를 포함해야 합니다. strcmp() : 두 문자열이 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다. strncmp() : 두 문자열의 원하는 길이만큼 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다. 두 함수의 리턴값은 비교 대상의 어떤 문자열이 더 크냐에 따라 달라지게 되는데 문자열의 크기는 ..
strcat와 strncat 함수는 두 문자열을 이어 붙여주는 기능을 합니다. 첫 번째 주소에 저장된 문자열에 두 번째 주소에 저장된 문자열을 붙여서 반환합니다. 두 함수는 문자열을 이어 붙인다는 형태는 동일하며 strncat는 일정 길이만큼 추가할 수 있는 옵션이 추가된 함수입니다. 위의 두 함수는 널로 끝나는 스트링에서 작동합니다. 그렇기에 함수에 대한 스트링 인수는 스트링 끝을 나타내는 널 문자(\0)를 포함해야 합니다. strcat() :문자열A에 원하는 문자열B를 문자열A 뒤쪽에 이어 붙이는 함수 strncat() :문자열A에 원하는 문자열B의 n개를 문자열A 뒤쪽에 이어 붙이는 함수 strcat(s2, s1)과 같이 strcat 함수에 최종 결과가 나올 문자열과 붙일 문자열을 넣습니다. 위의 ..
C언어 혹은 C++에서 자신이 원하는 문자열을 잘라낼 때 사용하는 함수로 strtok라는 함수가 있습니다. 이 함수는 string token의 약자로 인자 값으로 전달받은 매개변수를 구분자로 하여 문자열을 잘라내어 return 합니다. 만약 더 이상 자를 문자열이 없다면 NULL을 반환합니다. 문자열을 자르는 방식 M Y N A M E I S T O M \0 M Y \0 N A M E I S T O M \0 M Y \0 N A M E \0 I S T O M \0 M Y \0 N A M E \0 I S \0 T O M \0 C언어 또는 C++에서 문자열은 \0으로 종료가 되게 되어있습니다. 그렇기에 인자로 받은 문자열에서 구분자가 있는 위치를 널 포인트로 치환해줌으로써, 문자열을 끊기게 만듭니다. 예를 들..
C언어에서 문자열을 복사하고 싶다면 strcpy이나 strncpy함수를 사용하시면 됩니다. 두 함수의 차이는 복사할 문자열의 길이를 설정하느냐만 다를 뿐 기본적으로 문자열을 복사한다는 것은 같습니다. strcpy() : 대상 문자열 전체를 복사한다. strncpy() : 대상 문자열을 일정 길이만큼 복사한다. strcpy, strncpy 함수 형식 char* strcpy(char * dest, const char* src); char* strncpy(char* dest, const char* src, size_t num); dest : 복사를 받을 대상의 시작 주소 src : 복사를 할 원본의 시작 주소 num : 복사를 할 문자의 개수 ※ size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는..
strlen은 의 헤더 파일 안에 있는 함수로써(c++일 경우 cstring) const char* 타입의 문자열을 받아서 해당 문자열의 길이를 반환하는 함수입니다. 여기서 문자열의 길이라고 하는 것은 문자열을 구성하는 문자의 개수를 의미하며 문자열 마지막에 붙어 있는 종료 NULL문자인 \0을 제외한 문자 개수입니다. (공백 포함) 위와 같이 10의 크기를 가진 배열안에 있는 Hello라는 문자열은 5의 길이를 리턴하게 됩니다. strlen 함수 형식 size_t strlen(const char *str); 인자값 : const char* 타입의 문자열 리턴값 : 문자열의 길이(양수) ※ size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 un..
문자열을 입력받을 때 gets, puts 함수는 문자열 입출력 함수입니다. gets는 문자열을 입력받고 puts는 문자열을 출력할 때 쓰이는 함수입니다. 특히 gets나 puts를 사용하면 Enter단위로 문자열을 입력받기때문에 한줄씩 입력받을 수 있습니다. gets 함수 사용법 gets(str); str : 입력받을 문자형 배열 gets는 문자열을 입력을 받는 함수입니다. 문자열만 입력받을 수 있고, 개행을 기준으로 입력받습니다. 작동방식은 사용자로부터 문자열을 입력받아 함수의 인자로 명시한 주소의 메모리에 저장한 뒤 입출력 버퍼가 비어있는지 확인하고 비어있다면 문자 혹은 문자열을 입력받아 입출력 버퍼에 저장합니다. ※ 최근에는 gets대신에 gets_s를 사용하라고 권장하는 추세입니다. gets는 버..
문자열을 scanf()함수로 입력을 받게 된다면 공백도 하나의 문자로 인식하여 같이 입력을 받게 됩니다. 입력시 공백(space)를 무시하고 싶다면 " %c" 이런식으로 한글자를 띄워서 명시해주셔야 합니다. scanf 함수 char형 문자 입력 시 공백 무시하기 #include int main() { //배열 char arr[10]; //입력 //입력값 a b c d e f g h i j for(int i=0;i
scanf()는 기본적으로 공백(space)이나 개행(enter)을 기준으로 입력을 받기에 공백이나 개행 없이 한 줄로 쭉 입력을 한다면 입력이 정상적으로 이루어지지 않습니다. 하지만 scanf("%1d",&temp)와 같이 %1d를 사용하면 붙어있어도 한 번에 한 개씩 입력받을 수 있습니다. scanf 함수 정수 한글자씩 입력받기 #include int main() { //배열 int arr[10]; //입력 //입력값 : 0123456789 for(int i=0;i
2020년 8월 24일 총 8주간의 알고리즘 잡스의 몰입캠프가 종료되었다. 두달이라는 짧은시간 동안 내 나름대로 유의미한 성장을 이루었다고 생각된다. 예전에는 엄두도 못내는 문제들도 어떻게 접근해야 하는지 알게되었고 풀 수 있게 되었다. 물론 지금 내 실력으로 명문높은 기업들의 코딩테스트에 단번에 합격할 수 있다 장담은 못하지만 나는 애초부터 알고리즘 잡스를 수강할때 기업의 코딩테스트에 통과하자라기보다는 그냥 순수하게 알고리즘 자체를 잘 하고 싶어 수강을 한 케이스기 때문에 나의 초기 목적은 완벽하게 이루었다고 생각한다. 8주라는 시간동안 확실히 혼자하는것보다는 높은 성과를 얻어낸것 같다. ※ 혹시나 이 글을 보고 알고리즘 잡스의 몰입캠프의 수강을 고민하고 있는 사람이 있다면 추천하고 싶다. 1. 알고리..
금일 특강의 주제는 이때까지 진행했었던 알고리즘 문제를 같이 풀어보는것이 아닌 면접 스킬에 대한 강의였다. 알고리즘 잡스 대표님께서 삼성에서 면접관으로 수행하셨던 경험이 있으셔서 면접관으로 있었던 썰 듣는게 재미있었다. 면접의 포인트 3가지 기업의 인재상 1. 열정 2. 창의혁신 3. 인간미, 도덕성 기업의 규모가 크면 클 수록 기업의 인재상에 대해 매우 구체화 하고 회사의 임직원들에게 해당 기업의 인재상을 적절하게 주입시키려고 노력한다. 예를들어 삼성의 인재상은 위와 같은데 어떠한 인재를 뽑아야 할것인가를 기준으로 하고 뽑기에 기업의 인재상과 나를 일치시키려고 노력하자 2. 자기소개와 마지막으로 하고 싶은 말 신입일 경우 패기있고 열정적인 말투가 필요 마지막으로 하고싶은말이 없다 -> 열정이 없어보임 ..
지금까지 배운 내용들을 복습한다는 생각으로 단계별로 못 풀고 지나쳤던 문제들을 다 풀어나가고 있다. 이 문제들을 처음 접할 때는 어렵다고 느꼈었는데 지금 다시 풀어보니 가볍게 풀리는 문제들이 많아서 자신감이 생긴다. 알고리즘 잡스를 시작하고 나서 실력이 많이 향상되었음을 느낀다. 예전에는 어떻게 풀어야 할지 감이 잡히지 않는 문제들도 어떻게 해결해야 하는지 알게 되었으며 문제도 풀어나가고 있다. 새로운 과정 추가 학습과정이라는 새로운 과정이 개설되었다. 일단 내 계획은 지금까지 못 풀었던 문제들을 전부 다 Clear하고 추가 학습과정으로 넘어가는 것을 목표로 하고 있다. 요즘은 특별한 일 없이 계속 알고리즘 문제만 풀고 매주 목요일 시험치고 이 패턴을 계속 반복하고 있어 포스팅할 내용이 딱히 없다. 알고..
알고리즘 잡스에서의 커리큘럼은 크게 3가지 구성되어 있다. 1. 프로그래밍 언어 (if문 for문 배열등등) 2. 자료구조 (자료를 어떻게 저장할 것인가?) 3. 알고리즘 (저장되어 있는 자료들을 활용하여 의미 있는 결과를 만드는 법) Part1 프로그래밍 언어 레벨 1 ~ 레벨 10까지는 프로그래밍 공부한다. 기초적인 배열, 함수, 정렬, 재귀 함수의 활용과 시간 복잡도, 이진 탐색까지 배운다. 거의 1주일 만에 여기까지 진도를 나간 것 같다. 진도가 나가는 속도가 굉장히 빠르기 때문에 만약 알고리즘 잡스 학원을 올 생각이 있다면 기초적인 프로그래밍 언어의 활용 정도는 배우고 오는 것이 좋을 듯하다. Part2 자료구조 레벨 11 ~ 레벨 14까지는 그래프를 제외한 스택, 큐, 트리, 힙 등의 자료구조..
8/1 토요일 오늘 특강에서 풀 문제는 밀렵 꾼이라는 문제이다. 밀렵꾼이라는 문제는 지정된 맵 안에 다수의 멧돼지들이 움직이고 있고 손전등을 확인하여 눈앞에 있는 멧돼지들을 포획하고 여러 번 이 동작을 반복하였을 때 잡은 멧돼지들의 무게의 합을 구하는 문제이다. 코치님이 삼성 입사 문제로 나왔던 문제라고 하니 이 정도 문제만 쉽게 풀 수 있다면 알고리즘을 어느 정도 준비가 되었구나 하는 기준이 될 수 있다고 하셨다. 입력값으로 멧돼지들의 위치와 움직이는 방향, 달리는 속력, 돼지의 무게가 주어지고 만약 같은 격자 안에 2마리 이상의 멧돼지가 있을 경우 가장 무게가 많이 나가는 멧돼지가 다른 멧돼지를 잡아먹는다는 옵션도 있다. 문제만 들어서는 그렇게 난이도가 있는 문제인것 같지는 않았지만 문제의 제한시간이..