[문제] Closest Numbers | HackerRank Find the closest numbers in a list. www.hackerrank.com [문제 설명] - 가장 작은 차이를 가지는 두 수의 조합을 담는 벡터를 반환하는 함수를 만들자 [문제 풀이] - 벡터에 있는 수를 오름차순으로 정렬 - for문을 돌면서 두 값의 차이를 구함 > 두 값의 차이가 min과 같다면 새로 만든 벡터에 두 원소를 push > 두 값의 차이가 min보다 작다면 새로 만든 벡터에서 모든 원소를 pop 하고 새로운 두 원소를 push > 두 값의 차이가 min보다 크다면 그냥 넘어감 [코드] vector closestNumbers(vector arr) { sort(arr.begin(),arr.end()); ve..
Computer Graphics 3-1. Graphic Library 숙명여자대학교 컴퓨터 그래픽스 수업 - 유석종 교수님 # Standardization - Standardization > 기술을 개발하는데 중복된 투자를 막기 위해, 그리고 프로그램의 재사용성을 향상하기 위해 사용 - ISO Standardization for Computer Graphics > ISO/IEC JTC1/SC24, Working Group - CG definition by ISO > 그래픽 물체와 이미지를 만들고, 변형하고, 보여주고 그리고 저장하기 위해 컴퓨터 하드웨어와 소프트웨어를 사용 # Standardization Goal - Host Machine(flatform)의 독립성 > 대부분 하드웨어 플랫폼을 같은 프로..
Computer Graphics 2-2. Color Models 숙명여자대학교 컴퓨터 그래픽스 수업 - 유석종 교수님 # Light Source - 빛 = 광원 > 가시광선 파장: 390nm ~ 720 nm > 색의 주파수는 파장의 역임 = 1/파장 - 광원 > 백색광은 모든 색 주파수들의 혼합된 결과물 > 빛의 반사, 굴절, 흡수는 물체의 표면에서 일어남 # Hue, Luminance, Saturation - 색상(Hue) > 모든 주파수의 가장 높은 에너지를 가진 주요한 색 - 명도(Luminance) > 빛 에너지의 총 양 > 파동 곡선 아래의 영역 = 그래프의 면적 - 채도(Saturation) > Ed(주요 에너지/dominant energy) - Ew(약한 에너지/weak energy) > 날..
Reversing Engineering - 5. hello-world로 배우는 x64dbg 사용법 # 프롤로그 - hello-world.cpp // hello-world.cpp #include void main(){ puts("hello world!\n"); } # x64dbg 기본 설정 - x64dbg로 hello-world.exe를 열면 아무런 설정을 안했을 경우 아래와 같이 뜸 > 박스 부분을 살펴보면 현재 ntdll부분에 멈춰있는 것을 알 수 있음 > 이는 x64dbg가 기본적으로 시스템 중단점 설정이 켜져있기 때문 - 설정 - 환경설정으로 들어가서 아래 사진과 같은 창에서 시스템 중단점 설정을 변경해야 함 > 위의 창에서 박스로 표시된 옵션을 해제하면 됨 > 이후 디버깅 프로그램을 재시작하면 시..
[문제] Compare the Triplets | HackerRank Compare the elements in two triplets. www.hackerrank.com [문제 설명] - alice와 bob의 세개의 숫자를 비교하여 각 사람의 점수를 더함 - 각 배열의 자리에 더 큰 수를 낸 사람이 이기며 동점일 땐 아무도 점수를 받지 않음 [문제 풀이] - for문을 통해 a vector와 b vector의 각 자리를 비교 > a가 더 크다면 alice의 점수를 증가 > b가 더 크다면 bob의 점수를 증가 > 동점일 경우에는 아무것도 하지 않고 넘어감 - int형 vector를 생성하여 0번째 인덱스에는 alice의 점수를, 1번째 인덱스에는 bob의 점수를 저장 [코드] vector compare..
[문제] Plus Minus | HackerRank Calculate the fraction of positive, negative and zero values in an array. www.hackerrank.com [문제 설명] - 양의 값의 비율, 음의 값의 비율, 0의 비율을 구해야 함 - 소숫점 아래 6자리까지 표현함 [문제 풀이] - 각 양수, 음수, 0의 개수를 세기 위하여 for문으로 벡터를 탐색 - 나누어지는 수가 실수형이여야 하므로 형변환을 시켜주어야 함 - 비율을 구하기 위해 각 개수/벡터의 원소의 개수 식을 세움 - 6자리까지 출력할 수 있도록 출력 포맷 형식 지정 [코드] void plusMinus(vector arr) { int plus=0; int minus=0; int zer..
[문제] Grading Students | HackerRank Round student grades according to Sam's rules. www.hackerrank.com [문제 설명] - 학생들의 최종 성적을 구하는 문제 - 38점 이하의 점수를 받는 학생들은 반올림된 점수를 받지 못함 - 학생들의 점수를 반올림 할 수 있는 경우에 대하여는 반올림한 성적을 반영함 [문제 풀이] - 일의 자리가 5인 점수와 그렇지 않은 점수를 구별해야 함 - 100점일 때와 낙제점 38점 이하일 때에 대하여 예외처리 필요 - 일의 자리가 5 아래일 경우 해당 점수의 십의자리에 해당하는 숫자*10+5와 주어진 점수의 차를 비교하여 최종 성적을 구함 - 일의 자리가 5이상일 경우 해당 점수의 십의 자리에 해당하는 ..
[문제] Equal Stacks | HackerRank Equalize the piles! www.hackerrank.com [문제 설명] - 그림을 보니 push된 반대 순서대로 pop이 되는 것을 확인할 수 있음 - 반환 값은 각각 pop하며 스택에 남은 수의 합이 같아지는 순간 그 합을 리턴함 [문제 풀이] - stack과는 다르게 아래서 깔린 수부터 pop되므로 reverse함수를 통해 순서를 변경해주어야 함 - sum 함수를 선언하여 각 벡터의 원소의 합을 각각 구함 - 세 합이 같은 수가 될때까지 각각의 합을 감소시켜 같은 수가 될 때까지 반복함 - 같은 수가 되는 순간 그 수를 반환시킴 [코드] int sum(vector a){ int sum=0; for(int i=0;im){ a-=h1.b..
Reversing Engineering - 4. x64dbg 1. x64dbg 사용법 # x64dbg - 윈도우 디버거 - UI나 기능 등 많은 면에서 ollydbg를 닮았으며, ollydbg는 소스 코드가 공개되어 있지 않고 32비트만 지원하는데 반해 x64dbg는 오픈소스이고 32비트와 64비트를 둘 다 지원 - 강력한 디스어셈블 엔진을 가지고 있으며 그래프 뷰, 플러그인 등 리버싱에 있어서 편리한 여러가지 기능들이 내장되어 있음 # x64dbg의 사용법 - 기본적인 UI - x64dbg의 상단바 1. 분석할 프로그램을 열음 2. 프로그램을 재시작함 3. 프로그램을 완전히 정지 4. 프로그램을 실행(재개)함 5. 프로그램을 일시정지 시킴. 실행중인 상태에서 임의로 중단시키고 싶을 때 사용 6. 어셈블..
Reversing Engineering - 3. puts("hello world!\n") → x86_64 asm 1. hello world # hello world - 1 - "hello world!"를 출력하는 코드가 어떤식으로 어셈블리 코드로 바뀌었는지 확인 #include int main(){ puts("hello world!\n"); return 0; } > 소스는 visual studio code 2019를 통해 64비트 릴리즈 모드로 컴파일 # hello world - 2 - 보는 방법 1. 주소: 해당 어셈블리 코드의 시작 주소가 표시됨 2. 기계 코드 > 사람이 읽을 수 있는 어셈블리 코드의 전 단계인 기계어가 여기에 표시됨 > : 앞에 있는 값은 prefix이고 띄어쓰기 다음에 있는 부분..