티스토리 뷰

알고리즘/메모

오답노트

산타 브라운 2018. 1. 13. 15:25

Q1. 이차원 벡터

vector<vector<int>> ans;


        for(int i=0; i<ans.size(); i++){

            for(int j=0; j<ans[i].size(); j++){

                cout << ans[i][j] << " ";

            }

            cout << "\n";

        }



Q2. cin/cout & scanf/printf 속도

sync_with_stdio(false); 달면 scanf 근접하는 속도가 나온다.

=> 시험에서는 기본으로 주어짐.


Q3.

while(cin >> a >> b) => EOF 자동 탈출



Q4.

double %lf 받음.

소수점 자리 표현하기 %.9lf

float dobule 표현하는 소수 단위가 다름.



Q5.

문자열 배열의 = '\0'



Q6.

endl 보다는 '\n'쓰는게 속도 빠름.



Q7.

에라토스테네스의 체(=소수 구하기)


vector<int> p;

 for (int i=2; i<=n; i++) {

      if (c[i] == false) {

          //소수 넣음

          p.push_back(i);

          //해당 소수 배수들 모두 제외

          for (int j=i*2; j<=n; j+=i) {

              c[j] = true;

          }

      }

  }



Q8. 변수 최대/최소값

int, long, long long

int, long: -2,147,483,648 ~ 2,147,483,647

long long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807


=> #include <limits.h>

=> int max_int = INT_MAX; // 최대,최소값 쉽게 알 수 있음

=> int min_int = INT_MIN;




Q9. Bit Masking

현재 집합이 S일때,

-i 추가

S | (1<<i)

-i가 있는지 검사

S & (1<<i)

-i 제거

S & ~(1<<i)

-i 토글(0<->1)

S ^ (1<<i)


-부분집합의 개수 :  2^n-1

 for(int i=1; i<(1<<n); i++){ // 공집합 제외이므로 i=1 부터 시작

...

 }



Q10. 오름차순 정렬

#include <algorithm>

sort(a.begin(), a.end()); //기본 오름차순


=>내림차순으로 할 경우?

sort(a.begin(), a.end(), cmp); 

bool cmp(string a, string b){

return a>b;

}

=> 긴 문자순 정렬 + 같은 알파벳일 경우 사전 순으로 할 경우?


 char str[60];

 vector<string> v;

 for(int i=0 ; i<N ; i++){

     cin >> str;

     v.push_back(str);

 }


bool cmp(string a, string b){

    if(a.size() == b.size()){

        return a<b;// 사이즈 같으면 사전순

    }else{

        return a.size() < b.size(); //사이즈 다르면 작은순

    }

}


sort(a.begin(), a.end(), cmp)



Q11. next_permutation : 값의 경우의 수 (중복된 경우는 제외)


#include <algorithm>


vector <int> a;


do{

   for(int i=0; i<a.size(); i++){

       cout << a[i] << " ";

   }

   cout << endl;

}while(next_permutation(a.begin(), a.end()));

// 마지막 경우에 도달하면 반복문 탈출




sort(v.begin(), v.end(), cmp);


Q12.옳은 괄호인지 판단은 Stack 사용

( : push, ): pop(단, empty일 때 pop할 경우 무조건 Fail로 함)


Q13. 입력을 텍스트로 한번에 받기


cin 앞에 freopen("input.txt", "r", stdin);

"input.txt"파일 위치 경로: [프로젝트명]\[프로젝트명]\input.txt

=>시험에서는 기본으로 주어짐.

'알고리즘 > 메모' 카테고리의 다른 글

시간/공간 복잡도  (0) 2018.04.18
Visual Studio scanf 에러  (0) 2018.03.18
숫자 한 줄 입력받기  (0) 2018.02.14
알고리즘 메모장  (0) 2018.01.13
STL 함수  (0) 2018.01.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함