c 2

삼성 SW 역량테스트 B형/Pro 대비 - 최적화 기법

삼성 SW 역량테스트 B형/Pro 대비 - 최적화 기법 1. 들어가기 앞서 C, CPP 기준으로 -O 옵션이 없는 상태에서 기준으로 한다. Java 혹은 언어에 따라 다른 결과가 나올 수 있다. 2. 함수 인라이닝 빈번하게 호출 되는 경우, 함수를 인라인화 하는 것이 좋다. 이때 inline 키워드를 통한 컴파일 타임의 인라이닝은 최적화 옵션에 따라서 동작하게 되므로, macro를 통한 인라이닝을 하는 것을 의미한다. // inline 키워드 inline void MAX(int a, int b){ return a > b ? a : b }; // 전처리문 #define MAX(a, b) ((a) > (b) ? (a) : (b)) 문제에 따라서 TC당 한 두차례 호출되는 경우에는 인라이닝의 큰 효과를 보지 ..

[C, C++] 1~N 연속된 수로 이루어진 랜덤 배열

1~N, N~M으로 이루어진 배열 또는 이미 지정된 값들로 구성된 배열을 랜덤하게 생성하는 방법에 대해 누군가 질문한 적이 있다. 만일 테스트 용도로 그 값들을 랜덤하게 생성해야 한다면, 시간에 따른 RAND함수로 도출하는 것은 절대적으로 리소스 낭비가 크다. 예를 들어, 1~10까지의 수로 이루어진 배열 [1,2,3,4,5,6,7,8,9,10]을 랜덤하게 뽑으려면 확률상 몇번의 RAND()를 불러야 할까? 따라서 랜덤으로 배열을 만드는 것 보다. 이미 만들어진 배열을 랜덤으로 섞는 것이 더 유리하다. C++이나 Java와 같은 언어에서는 이미 이런 기능을 함수로 만들어 제공한다. 함수의 이름은 Shuffle이다. 만약 셔플 함수를 제공하지 않는 다면 아래와 같이섞을 수 있다. void shuffle(i..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사