목록전체 글 (91)
Study
CMP A, B A-B 연산이 실행된다 결과에 따라 Flag 값이 변경된다 ZF CF A > B 0 0 A < B 0 1 A == B 1 0 TEST A, B 두 인자를 AND연산자를 이용하여 비교

keyfile.dat파일 생성 후 임시로 1을 17개 입력하여 저장한 상태부터 시작한다 PUSH reverseM.00402173 -> 0x00402173에 pBytesRead 값인 keyfile.dat의 길이가 들어가 있다 CMP DWORD PTR DS:[402173], 10 DS: [402173] = 0x11(십진수 17) -> 현재 keyfile.dat의 바이트 수 0x10 과 keyfile.dat의 바이트수를 비교 JL SHORT reverseM.004010F7 -> keyfile.dat의 길이가 0x10(십진수 16)보다 더 크거나 같아야 0x004010F7 (keyfile is not valid 부분)로 점프 안한다 DS: [402173] < 10 (T이면 JMP) MOV AL, BYTE PTR..
코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 더보기 #include #include #include #include using namespace std; bool cmp(paira, pair b){ return a.second > b.second; } void DFS(map& dic, string& order, string tmp, int index, int depth){ if(depth == tmp.length()){ dic[tmp]++; return; } for(int i = index; i
코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 더보기 #include #include #include #include using namespace std; vector solution(vector record) { vector answer; vector temp; map reserve; for(int i = 0; i
코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 더보기 #include #include using namespace std; int answer = 0; void targetNumber(vector numbers, int target, int sum, int count) { if(count == numbers.size()) { if(sum == target) answer++; return; } targetNumber(numbers, target, sum+n..
코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 더보기 #include #include using namespace std; int solution(int n) { int answer=0; for(int i=1; i
코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 더보기 #include #include #include using namespace std; int solution(vector board, vector moves) { int answer = 0; stack s; for(int i=0;i
코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr ★풀이 방법 : 스택이용(짝을 짓는 문제는 보통 stack을 이용함) 스택에 짝이 없는 것만 삽입한다. 짝을 찾았다면 top()(스택의 가장 위에 있는 것)과 같은 것을 찾았다는 것이므로 가장 최근에 들어온 것을 스택에서 제거 일반적인 문자열 다루는 방법으로 풀면 효율성에서 실패!!가 뜸 더보기 #include #include using namespace std; int solution(string s) { int answer = 0; for(int..