본문 바로가기

분류 전체보기

(68)
[softeer/c++] [21년 재직자 대회 본선] 코딩 테스트 세트 di는 ci로 갈 수도, ci+1 로 갈 수도 있음ci, di 범위 주의 -> double이나 long long으로 선언1부터 늘려가면서 가능한 세트 수를 확인해본다면 O(N*T*2*10^12) 이라서 불가능출력값을 0부터 10^12까지 이진탐색해서 최댓값 구하기 -> 2*10^12가 logN으로 줄어듦ci가 이미 num보다 크다면 di는 ci+1에 줌ci가 num보다 작으면 ci+di가 num보다 큰지 확인, 크다면 ci+1는 di에서 ci에 주고 남은 거 줌크지 않으면 false
[논문리뷰] VMHunt: A Verifiable Approach to Partially-Virtualized Binary Code Simplification 가상화 난독화프로그램의 선택된 부분을 새로운 사용자 정의 ISA에서 바이트코드로 변환실행 시 바이트코드가 실제 머신에서 임베디드 가상머신 또는 인터프리터에 의해 에뮬레이트됨데이터 인코딩, 메타모르피즘, 제어 흐름 난독화 같은 다른 난독화 기법과 통합되어 전통적인 정적, 동적 분석 기술 적용 어려움하지만 성능과 호환성이 떨어져 코드의 주요 부분만 가상화 기존의 가상화 deobfuscation1.가상 프로그램 카운터의 현재 값에 따라 바이트코드 조각을 가져오고(디코드), 그 다음 해당 바이트코드를 에뮬레이트하는 머신 코드를 포함하는 핸들러로 디스패치하는 중앙 루프2.실행 명령어에서 가상화 난독화 계층 제거  => 두 연구 모두 가상화된 코드의 범위를 알고 있다는 가정=> 오버헤드를 줄이기 위해 난독화된 프로..
LCS(Longest Common Substring) 알고리즘 두 문자열에서 최장 공통 부분문자열(연속) 찾기 DP(Dynamic Programming) 이용int dp[n][m];int a[n];int b[m];if(i==0 && j==0) dp[i][j] = 0;else if(a[i] == b[j]) dp[i][j] = dp[i-1][j-1]+1;else dp[i][j] = 0; dp배열의 최댓값 => 최장 공통 부분문자열 길이
[알고리즘] 위상정렬 위상 정렬, topological sort순서가 정해져있는 작업을 차례로 수행해야 할 때 사용DAG(Directed Acyclic Graph)에만 적용 가능 / 사이클이 발생하지 않는 방향 그래프시간 복잡도: O(V+E)/정점 개수 + 간선 개수  예시> 대학의 선수과목(prerequisite)만약 특정 수강과목에 선수과목이 있다면 그 선수 과목부터 수강해야 하므로, 특정 과목들을 수강해야 할 때 위상 정렬을 통해 올바른 수강 순서를 찾아낼 수 있다. 이와 같이 선후 관계가 정의된 그래프 구조 상에서 선후 관계에 따라 정렬하기 위해 위상 정렬을 이용할 수 있다.  Queue로 구현- 깊이가 0이 정점 큐에 삽입- 큐에서 정점 꺼내서 연결된 모든 간선 제거- 간선 제거하면서 방문한 정점은 깊이 1씩 감소-..
[softeer/c++] 좌석 관리/string 비교 string 비교함수 compare#include string s;if(s.compare("string") == 0) cout compare함수는 두 문자열이 같으면 0, 다르면 -1 반환 틀렸을 때- sqrt 함수 사용한 safety 변수를 double로 받아야 하는데 int로 했었음- 메모리 해제를 안 했음  #include #include #include #include #include #include using namespace std;int N, M;int **seat; //N+1*M+1 배열double cal_safety(int x, int y){ //(x,y) 좌석의 안전도 구하기 double min = 40.0; for(int i=1; i max_safety(){ //안전..
[Rust] 시작하기 (m1) 1. 터미널에 명령어 입력curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2. 환경변수 업데이트source $HOME/.cargo/env 3. 터미널 껐다 켜야됨 -> 버전 확인rustc --version 공식 문서에 따르면 아래와 같은 에디터 지원Rust support is available in many editors:VS CODEVIM/NEOVIMRUSTROVERHELIXEMACSSUBLIME TEXTVISUAL STUDIOECLIPSE
[TypeScript] Interfaces type Team = "red" | "blue" | "yellow"type Health = 1 | 5 | 10interface Player { nickname: string, team: Team health: Health}Interfaces는 한 가지 용도만을 가짐object 모양을 특정하기 위함 TypeScript에게 object 모양을 알려주기 위한 방법은 1. Type - 좀 더 유연함2. Interfaces - 객체 지향 프로그래밍의 개념을 활용해서 디자인 interface User { name:string}// interface는 새 타입, 필드를 정의할 떄 기존 이름 사용 가능interface User { nickname:string}interface Player e..
[TypeScript] 객체지향 - Classes * JavaScript는 제공하지 않는 기능들private, publicclass Player { constructor( private firstName:string, private lastName:string, public nickname:string ) {}}const seojin = new Seojin("seojin", "moon", "문");seojin.firstName # errorseojin.nickname abstract 클래스, abstract 메소드(클래스 안의 함수)abstract class User { constructor( constructor( private firstName:string, # priva..