Stack(스택)1차원 선형 구조 → I/O 지점이 1개 뿐인 자료구조 → Stack Last In First Out 구조 (LIFO) → 후입선출, 김치냉장고 처음 넣은 것은 맨 아래 바닥에 깔린다.두 번째부터는 처음 넣은 것 위에 쌓인다.바닥에 있는 것을 꺼내려면 위에 쌓인 것들을 모두 치우는 수 밖에 없다.생각해볼 문제: 이런 구조는 왜 필요할까? → 뒤집기(순서 바꾸기), 되돌아가기(Ctrl + Z)Stack → Ctrl + Z Queue(큐)I/O 지점이 양 끝단으로 나뉘어져 있다. → QueueFirst In First Out 구조 → 선입선출버스를 타기 위해 줄을 서는 것과 같다.은행에서 번호표 뽑은 순서로 기다리는 것과 같다.Enqueue → 큐에 뭔가를 집어넣는다.Dequeue → 큐에..
자료를 정리하는 이유좌측과 우측을 비교해보면 자료를 정리하는 이유를 명확히 알 수 있다.머리속에 기억하는 것이 중요한 것이 아니라, 필요할 때 빨리 찾아서 활용할 수 있는 것이 중요하다.잘 정리해놔야 원하는 시점에 원하는 정보를 빠르게 찾아서 활용할 수 있다. 어떻게 정리할 것인가? (1)효율 좋은 사람은 '정리'를 잘한다.지저분한 방을 깨끗이 정리하는 규칙이 알고리즘이다.일정 규칙으로 자료를 나열(혹은 정리)하는 것이 자료구조다.구조화된 자료에서 원하는 것을 빨리 찾아내는 방법은 알고리즘이다. 어떻게 정리할 것인가? (2)이름 순으로, 키 순으로 정렬(Sort)한다.분야(카테고리)를 나누고 성질이 비슷한 것들을 따로 모은다.필요하다면 '단위와 규격'을 만든다. (예: 1반, 2반)생각해볼 문제주민등..
API와 SDKApplication Programming Interface → 함수 = 코드의 묶음 단위 = 어떤 기능을 코드로 제작Software Development Kit → 함수 모음함수는 호출하여 사용한다.함수와 함수 세트를 의미한다.공구와 (가정용)공구세트로 이해하면 쉽다. 참고https://www.inflearn.com/course/%EB%84%93%EA%B3%A0%EC%96%95%EA%B2%8C-%EC%BB%B4%EA%B3%B5-%EC%A0%84%EA%B3%B5%EC%9E%90
고급어와 저급어High level과 Low level의 직역이다.저급어는 기계어(Machine code)이다. = CPU가 인식할 수 있는 명령어기계어는 알아보기 매우 어렵고 고급어는 인간이 이해하기 쉬운 언어이다.고급어의 코드는 보통 함수 단위로 묶어 표시한다.고급어를 기계어로 바꾸는 것이 번역이다. 기계어 코드와 디스어셈블 코드기계어 코드는 CPU같은 기계장치가 이해하는 코드로 사람이 보고 이해하기 굉장히 어렵다.어셈블리어는 기계어를 디스어셈블한 코드로 사람이 이해할 수 있는 코드다.어셈블(Assemble): 어셈블리어 → 기계어디스어셈블(Disassemble): 기계어 → 어셈블리어 C언어 코드 = 고급어 = Hige level고급어가 CPU에서 실행을 하기위해서는 저급어로 번역해야한다. → 컴..
올리디버거(OllyDBG)란 무엇인가?디버깅 프로그램 중 하나로, 디스어셈블리와 디버그가 모두 가능한 도구로 리버싱에서 사용된다.디버거에 탑재된 Disassembler(디스어셈블러) 모듈이 기계어를 어셈블리어로 번역해서 보여준다.Debugger(디버거)는 다른 대상 프로그램을 테스트하고 디버그하는데 쓰이는 컴퓨터 프로그램이다.디버그란? 컴퓨터 프로그램의 정확성이나 논리적인 오류(버그)를 찾아내는 과정 올리디버거 활용올리디버거 아이콘을 더블클릭하여 실행해도 되지만, 분석할 파일을 마우스 우측 클릭 후 Open as OllyDbg를 클릭하여 실행도 가능하다. 분석할 파일을 올리디버거로 실행 후 화면을 보면 여러 코드들과 메모리 값들이 확인된다.1. 주소 창: 명령어가 실행될 주소를 가르키는 창2. OP 코..
카드를 나열하는 방법모든 카드는 그림1과 같이 뒷면이 보이도록 나열하며, 카드 앞면에는 0~4까지 숫자가 적혀있으며 같은 숫자는 없다고 가정한다.A는 B의 지시에 따라 카드를 뒤집어 볼 수 있다.B는 카드를 한 번에 두 장만 뒤집어 보라고 A에게 부탁할 수 있으며 A는 두 카드 중 어떤 카드의 값이 더 큰지 알려준다. 단 숫자를 알려주지는 않는다.A의 답을 듣고 B가 원한다면 두 카드의 위치를 바꿀 수 있다.어떤 카드부터 어떤 순서로 뒤집어 볼지는 온전히 B의 마음이다.이제 가장 적은 회수로 카드를 뒤집어 보고 가장 큰 수를 찾거나, 가장 작은 수를 찾아본다. 가장 큰 숫자 찾기기준 카드와 대상 카드1을 비교한다. (시작)대상 카드1이 크면 기준 카드와 자리를 바꾼다.기준 카드와 대상 카드2를 비교한다..