문제 효민이는 선린고를 졸업하고 CISCO에 입사하기 위하여 CISCO면접을 보았다.효민이는 CISCO 면접 시험을 푸는 중이다.네트워크에서 서브넷 마스크를 ex) 255.255.255.0 -> 11111111.11111111.11111111.0 -> /24(이진수에서 1의 개수가 24(8+8+8개) 이런 식으로 줄여 표기하기도 하는데, 시험 문제에서는 255.255.255.0이 아닌/24로 표기되어 있다고 한다. 효민이는 프로그래밍의 신이라 이 문제를 노트북을 키고 C언어로 쉽게 구현하려 한다.만약 이 문제를 푼다면 효민이는 CISCO에 취직을 할 수 있다고 한다. 구현해보자. 입력 X를 입력 받는다. X는 0 24 출력1 입/출력 예시 2 입력2 30 출력2 코드 #include /* made by ..
문제 1 프로그래밍을 좋아하는 효민이는 이집트에 가서 피라미드를 보았다. 그 순간 선생님이 알려 준 피라미드 별찍기가 생각났다. 효민이는 노트북을 키고 피라미드 예제를 코딩하기 시작하는데, 선생님이 알려준 피라미드는 너무 쉽다고 투정을 부린다. 그래서 효민이는 피라미드에 원하는 문자열을 삽입하여 피라미드를 멋있게 꾸미려고 한다. 입력 첫 번째 줄에는 홀수인 문자의 개수를 n 받는다.두 번재 줄에는 문자의 개수가 홀수인 n만큼의 문자열을 입력받는다. 출력출력은 문자열의 중간에 있는 문자(mid)가 피라미드의 꼭대기에 오고 mid-1, mid+1의 문자가 피라미드의 다음층으로 내려온다. 또 mid-2, mid+2의 문자는 다음층으로 내려온다. 따라서 mid-k, mid+k의 문자는 k층 만큼 내려온다. 입/..
컴파일러의 실행 단계 - 많은 수의 컴파일러는 다음과 같은 순서를 거쳐 소스 코드를 번역한다.- 컴파일러의 특성상 일부 단계는 생략되거나 더 세부화가 될 수도 있다.- C언어는 사용자가 제작한 소스 파일을 실행파일로 만드는데 1. Preprocess, 2. Compile, 3.Link 이 세 가지 과정을 거친다. Preprocess(전처리)- 소스파일 내부에 있는 전처리 명령을 수행하는 과정이다. - 전처리 명령은 소스파일 내부에 ‘#’으로 시작되는 명령어들이며 이 명령어들은 Preprocessor(전처리기)가 이 명령어들을 수행하게 된다.-전처리 명령어는 주로 소스파일을 컴파일 하기 전에 어떤 형태로 컴파일 할지 결정하거나, 소스코드의 가동성을 높이는 등의 역할을 수행하게 된다. Compile(컴파일)..
고급언어- 고급 프로그래밍 언어란 사람이 이해하기 쉽게 작성된 프로그래밍 언어 이다.- 이해 가능 정도에 따른 분류 중 하나이며. 이는 저급언어와 고급언어로 나뉜다. 고급언어의 특징- 저급 프로그래밍 언어 보다 가독성이 높고 다루기 간단하다.- C언어, 자바 등 대부분의 프로그래밍 언어들은 고급언어에 속한다.- 저급언어와는 다르게 특정 컴퓨터와 관계없이 독립적으로 프로그램을 만들 수 있다.고급언어를 컴퓨터 언어인 기계어로 변환하기 위해 컴파일러와, 인터프리터 등이 있다.기계어로 변환하는 동안 시간이 소요되며 저급언어보다 프로그램 크기가 더 크다. 고급언어 와 저급언어로 나누는 기준- 고급 프로그래밍 언어와 저급 프로그래밍 언어란 사람이 접근하기 쉬운가 어려운가의 차이를 두고 기준으로 하여 나뉘어져 있다...
전처리기 -전처리기란 컴파일러가 소스 파일을 컴파일 하기 전에 사용자가 지시한 작업을 먼저 처리하는 것 이다. 전처리기의 특징 -C 언어는 전처리기를 사용하여 그 능력과 표기법을 확장한다.-#으로 시작하는 행을 전처리 지시자라고함ex) #include.. #define.. #if..등-전통적인 C에서는 첫 번째 열에 #이 와야 한다.-전처리기는 C를 알지 못한다.-세미콜론; 이 없다.-파일 처리를 위한 전처리기 문 : #include -형태 정의를 위하 전처리기 문 : #define, #undef-조건 처리를 위한 전처리기 문 : #if, #ifdef, #else, #elif, #edif-컴파일 옵션 처리를 위한 전처리기 문: #pragma #include 미리 정의된 include 폴더에서 파일을 찾는..
프로젝트 이름 : 효민타자연습기 프로젝트 주제 : 영어타자 속도를 늘릴 수 있는 영타자 게임 만든 동기 : 입학 후 영타가 느려 영타연습을 많이 했는데 영타자 연습 겸 타자게임을 만들어 보고 싶어서 만들었다. 게임 소개 : 화면에서는 색깔이 다른 영단어들이 사방팔방 뜨게 된다. 색깔마다 점수 배점이 다르고, 사방팔방 단어가 계속 뜨는 동안에 입력을 해서 화면에 뜬 단어를 없애고 점수를 얻는다. 점수는 왼쪽 상단에 표시가 된다. 그리고 메인 메뉴에서 도움말과 나의 최고 점수를 확인 할 수 있다. 기존 최고 점수보다 게임 점수가 높다면 최고 점수는 갱신이 된다. 게임은 30초 동안 진행되고 30초가 지나면 메인 메뉴로 돌아가게 된다. 게임 화면 : 게임 초기 화면 게임 실행 중 화면 게임 도움말출력 과 입력..
기계 : 사람이 원하는 작업을 수행하기 위해 동력을 제어하고 관리하는 장치 프로그램 : 사람이 원하는 동작을 기계가 수행할 수 있도록 구체적으로 실행 가능한 명령들을 순서대로 작성한 것 컴퓨터 프로그램 : 컴퓨터를 동작시킬 수 있는 프로그램-사람이 원하는 작업을 할 수 있도록 명령들을 모아 둔 것 프로그래밍 : 프로그램을 작성하는 작업 코딩 : 컴퓨터가 수행 할 수 있는 암호화 된 코드를 작성하는 것. 프로그램의 좁은 의미와 넓은 의미 좁은 의미사람이 작업을 수행할 수 있도록 명령어들의 순서를 설계, 작성, 테스트 하는 것.프로그램 설계, 작성, 테스트 넓은 의미원하는 작업을 수행하지 못한 경우 오류를 찾는 디버깅, 프로그램 개선, 보완 등의 작업을 포함하는 것.프로그램 디버깅, 개선 및 보안 언어 : ..
포인터란 자료가 저장되는 기억장치의 기억주소를 가리키는 지시자로써 포인터는 다른 기억장소의 자료를 참조하는데 사용되는 데이터입니다. 1. 포인터를 써야 하는 이유 어떠한 변수이든지 어떠한 버퍼를 할당 받아서 사용하는데, 모든 변수의 저장과 참조는 변수가 저장될 혹은 저장된 주소를 알아야 가능하다. 그래서 컴퓨터는 변수를 참조할 때 그 변수가 저장되어 있는 주소를 먼저 찾아내고 그 주소가 가리키는 내용을 참조하게 된다. 이렇게 변수의 주소를 저장하거나 사용하기 위한 변수가 포인터이다.포인터를 사용하면 간결하고 효율적인 표현과 처리가 가능하고 더 빠른 기계어 코드를 생성할 수 있으며, 복잡한 자료 구조(배열, 구조체 등)와 함수의 쉬운 접근이 가능하다. 또한 포인터를 사용하지 않았을 때 코드로 표현할 수 없..
- heap
- rt_sigreturn
- pwable
- HackCTF
- shellcoding
- FSB
- TLS
- hacking
- codegate
- exit
- SQLi
- glibc
- srop
- overflow
- ebp change
- fsop
- pwnable
- 본선가고싶다
- fastbindup
- pwnable.tw
- tcache
- fastbin
- oob
- 해킹
- stack reusing
- Total
- Today
- Yesterday