반응형

전체 글 261

[필기,면접] 배열, 문자열 인코딩

이번에는 배열과 문자열 인코딩에 관한 내용을 잠깐 살펴볼 것이다. 필기시험이나 면접에서 질문받은적은 거이 없지만 기본내용이고 책에서 소개하고 있기에 간단하게 정리하였다. 책 내용을 바탕으로 또 알아야 할 부분에 대해 잠깐 살펴보자 배열 : 어떤 메모리 블록에 연속적으로 나열된 같은 유형의 변수모음연결리스트와 마찬가지로 선형적 저장, 특징은 다르다탐색 연산은 O(1) - 인덱스만 알면 바로 찾음, 삭제ㅡ삽입이 느림 O(n), *포인터 상수 : char *const ptr -> 다른 위치를 가리키는걸 바꿀 수 없다, 포인터가 가리키는 메모리 내용(char) 변경가능 상수 포인터 : const char* ptr -> 다른 위치를 가리키는걸 바꿀 수 있지만, 그 메모리의 내용을 변결할 순 없다. 문자열 : C/..

백준 [16234] 인구이동

삼성 SW역량테스트 문제이다. 링크 : https://www.acmicpc.net/problem/16234BFS를 통한 4방향탐색을 진행하면서 문제의 조건에 맞게끔 국경선을 열어 인구이동을 진행하여 각 칸의 인구수를 갱신시켜준다. 유의할점은 BFS를 한번진행하고 끝날 때, 인구수를 갱신시켜주면 Time Limit가 발생한다. 처음 모든 칸에 대한 인구이동이 일어난 후 모든칸에 대해 인구수를 갱신시켜야 Time Limit를 피할 수 있다. 이를 위해 한 영역에 대한 나라수와 총합을 저장하는 변수가 필요하다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606..

[C++] 가상함수 테이블

**면접에서 가상함수가 무엇인지 가상함수 테이블의 생성 등에 대해 묻는 경우가 있다.** 가상함수의 특징은 동적 바인딩으로 컴파일이 아니고 프로그램이 실행, 함수가 호출될 때, 바인딩할 주소가 결정되는것 그렇기에 컴파일은 빠르지만 실행시간이 느릴 수 있다. 동적 바인딩을 위한 주소를 담을 메모리를 미리 만들어 줘야한다. 가상함수 테이블 한 개 이상의 가상함수를 포함하는 클래스에 대해서는 컴파일러가 다음 가상함수 테이블을 만든다. 이것을 V-Table(Virtual Table)이라고도 하는데, 이는 실제 호출되어야 할 함수의 위치정보를 담고 있는 테이블이다. 12345678910111213141516171819202122232425262728293031#include#include#include using..

C , C++, C# 2019.03.12

[필기+면접] 연결리스트, 트리

최근에 도서관에서 발견한 '프로그래밍 면접 이렇게 준비한다'를 읽으면서 내용을 간단하게 요약하여 남기면 좋을 것 같다는 생각이 들었다. 취업준비를 하면서 매일 참고했던 자료들을 돌이켜보면 봤던 내용을 보고 1회성에 멈춘것이 마음에 걸렸다. 물론 공부내용을 연습장에 적었지만 나만의 사이트를 통해 간단하게 정리하면 더 좋을것 같다. 이 책은 학부과정을 충실히 이해하면 알 수 있는 기본내용으로 필기시험 및 기술면접을 돌이켜보면 반정도는 관련내용이 들어있었다. 내가 잘 아는 내용보다는 생소하고 필요한부분만을 간단하게 정리할 예정이다. 코드수정 -> 1. 데이터가 함수에 제대로 들어오는가 2. 코드 한줄한줄 작동하는가 3. 함수에서 데어터가 올바르게 나오는가 4. 빈번히 발생되는 오류조건 체크(비어있는 자료, N..

C++ 가상함수 이해정리

참고 : https://koocci.github.io 가상함수를 하기 전, 다음을 확인하자. int main(){ Base* bptr = new Derived(); //컴파일 ok Derived* dptr = bptr; //컴파일 에러 ... Derived* dptr = new Derived(); // 컴파일 ok Base* bptr = dptr; // 컴파일 ok}// Base는 부모 클래스, Derived는 자식 클래스Derived 클래스는 Base 클래스의 유도 클래스이므로 Base 클래스의 포인터 변수로 Derived 객체의 참조가 가능하고 문제 없이 컴파일이 가능하다. 그러나 bptr은 Base형 포인터이므로 bptr이 가리키는 대상은 Base 객체일 수도 있는 것이다. 그럴 경우, Derive..

C , C++, C# 2019.03.06

C++ 함수 오버라이딩 간단정리

참고 : https://koocci.github.io/ 다형성과 상속은 아주 중요한 개념이다. 항상 머리속으로 생각하고 있어야 한다. 이와 함께 C++ 함수 오버라이딩에 관해 알아보자. 알아보기전에, 보통 C++프로그래머라면 기술시험 및 면접에서 오버로딩(Overloading)과 오버라이딩(Overriding)에 대해 자주 묻는다. 오버로딩(Overloading) : 같은 이름의 함수에 매개변수를 다르게 사용하여 매개변수에 따라 다른 함수가 실행 특징) 메소드 이름이 같다. 리턴형이 같아도 되고 달라도 된다. 파라미터 갯수가 달라야함 파라미터 갯수가 같으면, 자료형이 달라야함 오버라이딩(Overriding) ; 상속받았을때, 부모클래스의 함수를 사용하지 않고 다른 기능을 실행할때, 함수를 자식클래스에 같..

C , C++, C# 2019.03.06

C++ 다형성,상속 간단정리

출처 : https://koocci.github.io/c++/2016/11/17/C++_16.html 상속 - 부모꺼를 자식이 물려받음 -> 자식은 자식꺼 + 부모꺼 사용가능 자식 클래스의 생성자는 자신이 상속한 부모클래스의 맴버를 초기화해야함 -> 부모클래스를 호출하는 방식으로(이니셜라이져사용)*자식 클래스 객체생성과정은 부모클래스를 무조건 호출!! 명시하지 않으면 부모클래스의 void 생성자 호출 자식 클래스 객체가 소멸될 떄, 자식 클래스 소멸자 실행 후 부모클래스 소멸자 실행 접근 제한자에서의 상속은 해당 접근 제한자보다 넓은 것들을 지정한 걸로 바꿈Ex) Class 자식 : private 부모 -> private보다 넓은 맴버는 private로변경 -> 다른 클래스가 솔찍히 접근할 수 없다. (..

C , C++, C# 2019.02.26

[자료구조] 링크드 리스트(C++)

C++ 역시 C언어로 구현한 링크드리스트와 비슷하다. 이전에도 말했듯이 아주 중요한 구조이다. 12345typedef struct Node { int val; Node *next;}node; cs 그렇다면 C++클래스로 어떻게 적용시킬까? 이전 게시물에서 간단하게 표현하였지만, 실제 적용되는 구조를 알아보자 1234567891011typedef struct Node { int val; Node *next;}node; class list {private: node* head; // 첫 노드 node* tail; // 마지막 노드 node* New; // 노드 생성용 node* pos; // 확인용(이동)cs 이렇게 클래스 맴버변수에 node포인터 타입을 가지도록 한다. 각 node포인터의 역할을 주석으로 ..

C , C++, C# 2019.02.20

[자료구조]링크드리스트 삽입 삭제 (C언어)

단일 링크드 리스트에 의기본 구조를 꼭 알고 가자 1234typedef struct list { list *next; int val;};cs 이것을 가지고 동적으로 메모리를 할당하고 '->'연산자를 이용하여 리스트를 형성할 수 있다. 그렇다면 이 list를 삽입, 삭제하는 코드를 보자 요정도 내용까지는 우리가 짚고 넘어갈 수 있으면 좋다. 코드를 보고 따라해보면서 눈과 머리 그리고 손으로 익히도록 하자. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899..

C , C++, C# 2019.02.20

[자료구조] C/C++ 단일 링크드리스트

친구를 통해 링크드리스트에 대한 이론과 한번쯤은 직접 만들어보라고 조언해 준적이 있다. 우선 링크드리스트가 무엇인지는 위키백과를 참고하였다. 링크 : https://ko.wikipedia.org/wiki/%EC%97%B0%EA%B2%B0_%EB%A6%AC%EC%8A%A4%ED%8A%B8 이곳에서 단일 링크드 리스트에 대해 살펴보자. 정리하면, 각 노드가 데이터(값)와 다음노드나 이전노드를 연결하는 포인터를 가지고 있는 자료구조이다. 특징은 자료의 추가와 삭제가 O(1)이며 동적할당을 통해 연속적인 기억장소 할당이 필요하지 않지만 특정데이터를 검색하는데 O(n)의 시간이 걸린며 포인터의 사용으로 저장공간의 낭비가 있다. C / C++의 단일 링크드리스트의 코드를 보며 살펴보자. 자세한 내용은 아래 출처에서..

C , C++, C# 2019.02.19
반응형