알고리즘

    C++ vector에 중복된 인자 제거하기 - 백준 알고리즘 오답노트 1181

    C++ vector에 중복된 인자 제거하기 - 백준 알고리즘 오답노트 1181 중복된 값 제거는 #include 의 unique 함수를 이용그리고 unique 함수가 작동된후에는 컨테이너에 중복된 값이 있던 자리가 남아 있다. 그것도 끝에v.erase 함수를 이용해서 잔재 제거예시)vector 에 1 2 3 4 5 5 6auto it = v.unique(v.begin(),v.end() )// 결과 1 2 3 4 5 6 6v.erase(it , v.end() )// 결과 1 2 3 4 5 12345678910111213141516171819202122232425262728293031323334 //1181 #include#include#include#include using namespace std; bo..

    C++ rotate 함수 - 백준 알고리즘 오답노트 10812

    C++ rotate 함수 - 백준 알고리즘 오답노트 10812 rotate 함수는 원소들을 말 그대로 회전을 하는 함수이다.#algorithm에 포함예)vector에 1 2 3 4 5 가 포함왼쪽으로 한칸 밀고 싶으면 rotate( v.begin() , v.begin()+1 , v.end() )을 넣으면 된다.여기서 주의점은 rotate 의 첫번째 두번째 인자는 해당 원소를 포함하고, 세번째 인자는 포함하지 않는다. 123456789101112131415161718192021222324252627 //10812 #include#include#includeusing namespace std;int main(){ int n,m; cin>>n>>m; vector v; for(int i = 1; i >start..

    C++ 파일의 끝 직접 입력하기 - 백준 알고리즘 오답노트 1152

    백준 BOJ 알고리즘 오답노트 - 1152 번 C++에서 파일의 끝을 입력하면 cin은 false을 반환한다.그러나 파일 입출력을 통해 파일을 주지 않으면콘솔에서는 직접 파일의 끝임을 알려야한다. 윈도우는 ctrl+ZUNIX ctrl+DBOJ은 파일형태로 주기때문에 EOF(end of file)가 포함되어 있다. //1152#include#includeusing namespace std;int main(){int len = 0; string tmp; while(cin>>tmp){ len++;}cout

    c++ vector 초기 크기 인자값 문제 - 백준 알고리즘 오답노트 10819

    백준 BOJ 알고리즘 오답노트 - 10819 번 백터의 초기 크기값은 그 값을 보장하지 못한다. !!백터를 만들때 인자값으로 5를 넘기면 크기가 5인 백터가 만들어진다고 배웠는데막상 해보니까 크기가 더 컸다. 7인가? 그래서 백터를 생성할때 크기를 넣지 않고 push_back을 여러번 사용하며 직접 늘리는 방법으로 했다. 12345678910111213141516171819202122232425262728293031323334353637 //10819 #include#include#includeusing namespace std; int cal(vector& a){ int result = 0; for(int i = 0; i >n; vector v; for(int i = 0; i>tmp; v.push_ba..

    C++ cin/cout 입출력 성능 개선 - 백준 알고리즘 오답노트 15552

    백준 BOJ 알고리즘 오답노트 - 15552 번 문제중에서 cin과 cout을 번갈아 사용하는 경우 상당히 성능에 문제가 보인다.다음과 같은 방법으로 cin 과 cout을 사용하자. ios_base :: sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); 을 main 다음에 그리고 cin,cout을 쓰기전에 써준다. 다른방법으로는 애초에printf와 scanf을 사용하면 문제는 해결된다. 123456789101112//15552#includeusing namespace std;int main(){ cin.tie(NULL); ios_base::sync_with_stdio(false); int cases; cin>>cases; int A,B; while(cases-..

    C++cin/cout 시간초과 해결 - 백준 알고리즘 오답노트 10815

    백준 BOJ 알고리즘 오답노트 - 10815 번 문제중에서 cin과 cout을 번갈아 사용하는 경우 상당히 성능에 문제가 보인다.다음과 같은 방법으로 cin 과 cout을 사용하자. ios_base :: sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); 을 main 다음에 그리고 cin,cout을 쓰기전에 써준다. 다른방법으로는 애초에printf와 scanf을 사용하면 문제는 해결된다. 12345678910111213141516171819202122//10815 // 애초에 scanf와 printf을 쓰면됨 #include#include#includeusing namespace std;int main(){ //cin.tie(NULL); int cases1; /..

    C++ stack 활용 애디터 - 백준 알고리즘 오답노트 1406

    백준 BOJ 알고리즘 오답노트 - 1406 번 에디터 문제한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다.이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다.이 편집기가 지원하는 명령어는 다음과 같다.L커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨)D커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨)B커서 왼쪽에 있는 문자를..

    C++ scanf의 리턴값 활용 - 백준 알고리즘 오답노트 10951

    백준 BOJ 알고리즘 오답노트 - 10951 번 내 맴대로 출력을 하는게 아니라. 출력 형식에 맞게 개행도 해줘야 한다.TestCase가 없는 경우는 scanf의 리턴값을 이용한다. 잘못된 예시: while( scanf( ) ) { ... } scanf의 리턴값은 실패시 -1 을 반환하기 때문에 무한 루프에 빠질 수 있다. 올바른 방법: while( scanf( ) == 2 ) { ... } 또는 while( scanf( ) != EOF ) {.... } 12345678910111213141516//10951 #include int main(){int x,y; while( scanf("%d %d",&x,&y) == 2 ){ printf("%d\n",x+y); } return 0;} //FB1. 출력시 p..