본문 바로가기

전체 글

(74)
[파이썬] 3. 시퀸스 자료형 1. 시퀸스 자료형이란? 같은 자료형의 값이 여러개 저장되는 자료형 다른 비슷한 속성을 가지나, 쓰임과 종류에 따라 "리스트","튜플","range","문자열"로 나뉨 1.1. 시퀸스 자료형의 특징 특정 값의 유무 확인하기a = [1,3,4] print(10 in a) #리스트에 해당 값이 있는지 확인하기 print(10 not in a) # 리스트에 해당 값이 없는지 확인하기 2. 리스트 2.1. 리스트란? 리스트의 구조는 연결리스트의 구조이다. 리스트는 배열과 달리 길이의 제한이 없다. 리스트는 원소의 편집이 자유롭다. 리스트는 서로 다른 타입도 대입이 가능하다. 또한, 리스트를 이용해 반복문을 실행할 수 있음 a = [1,2,3,4,5,6] result = 0 for num in a: result ..
[파이썬] 2. 입력과 출력 정리 1. 파이썬 입력하기 1.1. input() 기본형 Variable = input("Message") # Variable: 입력받은 값을 저장할 변수 # Message: 사용자로부터 값을 입력받을 때, 출력할 메시지 a = input("What is your name?") print(a) 1.2. 정수/실수 입력받기 input()은 문자열로 입력을 받음. 원하는 자료형으로 저장하기 위해서는 형변환이 필요함. a = int(input("How old are you?")) a = float(input("How old are you?")) print(a) 1.3. 두 개 이상의 문자열을 입력 받기 기본형 Variable1, Variable2 = input("Message").split("str") # Vari..
[파이썬] 1. 파이썬 변수와 연산자 정리 1. 파이썬의 개요 1.1. 한 줄에 여러가지 구문 처리 print("Hello"); print("Hello") 1.2. 파이썬의 들여쓰기가 구문을 결정 들여쓰기는 스페이스바를 4번 누르거나, 텍스트 편집기를 통해 자동으로 된다. if(x b gt(a, b) 3.4. 논리 연산자 논리 연산자: 두 개 이상의 조건을 물어볼 때 사용. 순서가 헷갈릴 때는 괄호로 구분해줘야 한다. 이름 설명 문법 함수 비트별 논리곱(Bitwise And) 양쪽이 모두 True일 때만 True a & b and_(a, b) 비트별 논리합(Bitwise Or) 어느 한 쪽이 True이면 True a | b or_(a, b) 비트별 반전(Bitwise Inversion) 원래 있는 조건이 반전이 됨 (True False) ~ a ..
[알고리즘] 백준 3009번 문제 풀이 1. 문제 보기 해당 문제는 문제 링크를 통해 보실 수 있습니다. 2. 풀이 코드 #include int main(void) { int coordinate[3][2]; int x, y; //나머지 좌표값 입력 if (scanf("%d %d", &coordinate[0][0], &coordinate[0][1]) == NULL) return 0; if (scanf("%d %d", &coordinate[1][0], &coordinate[1][1]) == NULL) return 0; if (scanf("%d %d", &coordinate[2][0], &coordinate[2][1]) == NULL) return 0; //X 좌표 찾기 if (coordinate[0][0] == coordinate[1][0]) x..
[알고리즘] 백준 1712번 문제 풀이 1. 문제 보기 해당 문제는 문제 링크를 통해 보실 수 있습니다. 2. 풀이 코드 #include int main(void) { int year_cost = 0; int produce_cost = 0; int product_cost = 0; int break_even_point = 0; if (scanf("%d %d %d", &year_cost, &produce_cost, &product_cost) == NULL) { return 0; } // 값을 나누기 전에, 값이 0이라면 -1을 출력하도록 합니다. if (year_cost == 0 || (product_cost - produce_cost) == 0) { printf("-1\n"); return 0; } // 손익 분기점을 계산합니다. break_e..
[컴파일러 구성] flex와 bison으로 간단한 계산기 만들기 1. 문제 제시 사칙연산이 가능한 코드를 미리 제시하고, 이를 기반으로 새로운 연산을 추가하는 문제. 추가해야 하는 연산은, 나머지 연산(%)과 지수연산(^)이다. 소스코드 파일은 flex파일인 .l 파일과, bison파일인 .y 파일이 있다. 간단히 설명하자면, flex 파일에서는 토큰을 구분하는 역할을 수행한다. bison 파일에서는 flex에서 구분한 토큰을 기반으로, 파일에서 정의한 정규문법을 처리하는 역할을 수행하게 된다. 2. 풀이 코드 flex 파일 (04-2.l) %{ // 구문분석기(bison)과 연결하기 위한 파일. 구문분석기를 실행하면 자동 생성됨. #include "04-2.tab.h" %} %% // 각 연산자 기호가 토큰이 되고, 이를 인식하면 특정 문자열을 반환한다. "+" {..
[리버싱] Ollydbg 단축어와 여러 가지 팁 정리 1. Code Window에서 동작하는 단축어 명령어 단축키 설명 Restart [Ctrl+F2] 현재 프로세스의 디버깅을 다시 시작 Step Into [F7] 코드 한 줄을 실행 Step Over [F8] Step Into와 달리, 함수에 들어가지 않고 리턴값만 받음 Execute Until Return [Ctrl+F9] 함수 코드 내에서 RETN명령어까지 실행(함수 탈출 목적) Go to [Ctrl+G] 원하는 주소로 이동 Excute till curser [F4] 커서가 위치한 곳으로 이동 Set/Reset Break Point [F2] BP 설정/해제 Run [F9] BP 설정 되어 있는 곳까지 실행 Preview CALL/JMP address [Enter] 커서가 CALL/JMP 명령어에 있으면..
[리버싱] Windows 환경에서 파일과 메모리에서의 주소체계 용어 설명 리버싱에서의 주소계산은 "파일"과 "메모리" 관점에서 이루어집니다. 파일 안에서 절대주소는 OFFSET이라고 합니다. 메모리 안에서의 절대주소는 VA라고 합니다. 또한, 파일이나 메모리에는 여러 종류의 공간이 존재합니다. 예를 들어 Header 같은 공간이나 Section 같은 공간들이 존재합니다. 이런 공간들은 용도에 따라 나뉘어져 있으며, 공간의 시작점은 파일에서는 "PointerToRawData" (OFFSET값), 메모리에서는 "VirtualAddress" (VA값)이라고 합니다. 또한, 공간 내 특정 주소를 지칭하는 용어도 있습니다. 파일에서는 "RAW" (OFFSET값), 메모리에서는 "RVA" (VA값)이라고 합니다. (이를 변환하는 것은 밑에서 다룹니다.) 정리하자면, 파일이나 ..