전체 글

전체 글

    22.11.8 SSAFY 스터디 CS 발표 - 디자인 패턴 (템플릿 메서드 패턴)

    22.11.8 SSAFY 스터디 CS 발표 - 디자인 패턴 (템플릿 메서드 패턴)

    ❓ 템플릿 메서드 패턴이란? 템플릿 메서드 패턴은 알고리즘의 골격을 정의합니다. 템플릿 메서드를 사용하면, 알고리즘의 일부 단계를 서브 클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브 클래스에서 재정의할 수도 있습니다. 템플릿 메소드는 알고리즘의 템플릿(틀)로, 일련의 단계로 알고리즘을 정의한 메서드입니다. 템플릿 메서드는 여러 단계 가운데 하나 이상의 단계가 추상 메서드로 정의되며, 추상 메서드는 서브 클래스에서 구현됩니다. 이러면, 서브 클래스가 일부분의 구현을 처리하게 하면서도 알고리즘의 구조는 바꾸지 않아도 됩니다. ❗️예 1 (커피와 홍차) 커피와 홍차는 매우 비슷한 방법으로 만들어집니다. prepareRecipe() 메서드는 알고리즘의 절차를 정의..

    백트래킹(Backtracking)이란?

    백트래킹이란? 1. 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하다가, 가능성이 없다고 판단되면, 되돌아가서 다시 해를 찾아가는 기법 2. 조합, 순열, 부분집합도 가지치기가 없는 백트래킹이라고 할 수 있습니다. 3. 백트래킹을 이용하여, 완전탐색을 수행할 수 있고, 가지치기를 통해 최적화가 가능합니다. 백트래킹은 크게 두 부분으로 구분할 수 있습니다. void back(int depth, int m){ if(depth == m){ // 1. 선택한 원소로 기반으로 결과를 계산하는 부분 }else{ // 2. 원소를 선택하는 부분 } } 꿀팁 재귀 함수는 함수를 명확히 정의하는 것이 좋습니다. 함수를 명확하게 정의하면, 나를 이용하여 나를 정의하는 것이 명확해집니다. 예를 들어 아래와 같은 함..

    22.10.11 SSAFY 스터디 CS 발표 - 컴퓨터 구조, 기억장치

    22.10.11 SSAFY 스터디 CS 발표 - 컴퓨터 구조, 기억장치

    기억장치 컴퓨터의 기억장치는 중앙처리장치 내부의 레지스터, 중앙처리장치와 직접 버스로 연결되는 주기억장치, 그리고 입출력 장치로 연결되는 보조기억장치로 구성되어 있습니다. 컴퓨터의 주기억장치(Main memory)은 주로 전원이 켜져 있을 때 실행하는 프로그램과 데이터를 저장하고, 보조기억장치(Auxiliary storage)는 영구적으로 프로그램과 데이터를 저장합니다. 주기억장치는 중앙처리장치와 온라인으로 연결되고, 보조기억장치는 오프라인으로 연결됩니다. 온라인 연결은 중앙처리장치가 필요할 때 항상 사용할 수 있다는 의미이고, 오프라인은 별도의 연결 과정을 거친 후 사용할 수 있다는 의미입니다. 레지스터는 주기억장치의 내용을 필요에 따라 임시로 중앙처리장치 안에 저장하는 용도로 사용됩니다. 주기억장치(..

    2022.10.07일 서버 개발자 취준생의 성장 일지 ✍🏼

    2022.10.07일 서버 개발자 취준생의 성장 일지 ✍🏼

    지원 결과 넥토리얼 - 코딩 테스트 합, 최종 면접 진행 예정 카카오 - 2차 코딩 테스트 합, 면접 진행 예정 KT SW 역량 우수자 전형 - 코딩 테스트 합, 면접 진행 예정 KT DS, CJ ENM - 서류 합 넷마블 - 서류/코딩 테스트 합, 필기 테스트 진행 예정 라인 - 코딩 테스트 탈락 신한은행 - 서류 탈락 NC - 서류/코딩 테스트 탈락 하하하 카카오 블라인드 채용 1차를 합격하였다. 카카오 1차도 통과하지 못하면 조금 좌절할 뻔 했지만, 다행히도 붙을 수 있었다. 2차 테스트도 합격했다 꺄아아아악 👏 정말 정말 가고 싶은 기업이라서 너무 너무 기분이 좋았다. 이제 면접이 남았는데,, 후.. 떨려서 그런지 집중도 잘 되지 않고, 걱정이 많다.. LG CNS, 현대 오토에버, CJ ENM,..

    22.09.22 SSAFY 스터디 CS 발표 - 컴퓨터 구조

    22.09.22 SSAFY 스터디 CS 발표 - 컴퓨터 구조

    본 게시글의 내용은 플랫폼(시스템, 운영체제) 또는 컴파일러/인터프리터에 따라 달라질 수 있습니다. 컴퓨터 시스템 또는 컴파일러/인터프리터가 이런 방식으로 동작할 수도 있겠구나 정도로만 참조해주시면 감사하겠습니다. 👍 Word(단어) 중앙처리장치가 한 번에 엑세스 하는 데이터를 word(단어)라고 합니다. 단어의 크기는 일반적으로 바이트의 배수입니다. 그리고, 중앙처리장치 내부의 레지스터의 비트 수도 단어의 크기와 같은 것이 일반적입니다. 예를 들면, 32비트 프로세서는 내부 레지스터의 크기도 32비트, 기억장치를 엑세스 하는 단어의 크기도 32비트입니다. 데이터 버스는 시스템 구성 요소들 간에 데이터를 전달하는 경로입니다. 한 개의 신호선은 한 번에 한 비트의 정보를 전달합니다. 데이터 선이 32개라면..

    C언어 포인터는 왜 타입별로 구분되어 있는가?

    C언어 포인터는 왜 타입별로 구분되어 있는가?

    C언어 포인터는 왜 타입별로 구분되어 있는가? #include int main() { int a = 300000000; // int형 변수에 300000000를 저장 double b = 3.0; // double형 변수에 3.0 저장 int * c = &a; // c는 a의 주소를 저장 double * d = &b; // d는 b의 주소를 저장 int e = a + *c; // a + (c가 가리키는 주소에 저장된 값) double f = b + *d; // b + (d가 가리키는 주소에 저장된 값) } 위 코드에서는 int형 변수a에 3_0000_0000을 저장하고, double형 변수 b에는 3.0을 저장합니다. 그리고, int 포인터형 변수 c에는 a의 주소를 저장하고, double 포인터형 변수 ..

    C++ (Call By Value, Call By Reference)

    C++ (Call By Value, Call By Reference) #include int func1(int a) { a += 1; return 20; } int func2(int * a) { *a += 2; return 32; } int func3(int & a) { a += 3; return 100; } int main() { int t = 5; t += 3; printf("Before : %d\n", t); func1(t); printf("After func1() : %d\n", t); func2(&t); printf("After func2() : %d\n", t); func3(t); printf("After func3() : %d\n", t); } Before : 8 After func1() :..

    Java의 다형성은 어떻게 동작하는가?

    Java의 다형성은 어떻게 동작하는가?

    다형성은 어떻게 동작하는가? 다형성은 도대체 어떻게 동작하는 것일까요? 자식 객체를 부모 타입의 레퍼런스 변수에 대입하면, 어떻게 자식의 오버라이딩된 메서드가 호출되는 걸까요? 자바의 다형성을 설명하기 앞서 정적 바인딩에 대해 간략히 설명 드리겠습니다. 정적 바인딩 (Static Binding) 위 예시를 Java가 아니라, 정적 바인딩을 지원하는 가상의 언어라고 생각해봅시다. 정적 바인딩의 경우, 호출하는 함수의 주소가 컴파일 타임에 결정되기 때문에, 컴파일러가 함수의 호출문을 함수의 주소로 점프하는 기계어로 번역하게 됩니다. (어셈블리 코드 참조) 따라서 각 객체들은 함수의 주소를 저장할 필요 없이, 변수들만 저장하면 됩니다. 또한, 이미 결정된 주소로 가서 함수를 단순히 실행시키기만 하면 되기 때문..