본문 바로가기

c++9

C++ 백준 BOJ 1620 나는야 포켓몬 마스터 이다솜 포켓몬 이름을 입력받아 입력 순서대로 번호를 부여하고 도감을 만듭니다. 해당하는 포켓몬의 이름을 입력하면 번호를, 번호를 입력하면 이름을 출력하는 문제입니다. 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; string p; string name[100001]; unor.. 2022. 12. 27.
C++ 백준 ios_base::sync_with_stdio(false); cin.tie(null); 구문을 추가해주는 이유 C++로 백준이나 알고리즘 문제를 풀 때, 보통 실행속도를 높이기 위해 아래 구문을 사용합니다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // endl (x) -> '\n'사용 return 0; } C++의 cin과 cout은 scanf와 printf보다 속도가 느립니다. 출력은 큰 차이는 아니지만 입력같은 경우는 2배 이상의 속도 차이가 난다고 합니다. 실제로 아래글 예시의 입력의 경우, scanf를 쓰는 경우 평균 0.9206초가 걸리고, cin을 쓰는 경우는 평균 2.1742초가 걸립니다. 출력의 경우, printf를 쓰는 경우 평균 0.8614초가.. 2022. 12. 26.
C++ 백준 BOJ 1212 8진수 2진수 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하는 문제입니다. (난이도는 높지 않지만 출력값의 맨 앞이 0이 되는 경우, 시간초과 예외로 맨탈이..) 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net #include #include using namespace std; int main(){ string octal_str, binary_str = ""; cin >> octal_str; for(int i = 0; i < octal_str.size(); i++){ switch (octal_str[i]){ case '0': if(i == 0){ binary_str += "0"; break; } else{ binar.. 2022. 11. 15.
[기초] 정렬(sort) 알고리즘 정렬 정렬은 어떤 자료를 순서대로 배열하는 것을 의미합니다. 많은 알고리즘 문제에서 정렬을 사용하여 문제를 해결합니다. 정렬은 직접 구현하기 보다는 STL에 있는 sort를 사용하는 것이 좋습니다. (STL sort는 intro sort를 사용한다고 합니다. 매우 빠름) 참고 링크 https://www.acmicpc.net/board/view/16770 글 읽기 - stl의 sort 로는 시간초과가뜨는데 제가 틀린건가요? 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net Introsort - Wikipedia Hybrid sorting algorithm Introsort or introspective sort is a hybrid sorting algorithm that provides .. 2022. 8. 8.
C++ 백준 BOJ 10870 피보나치 수 5 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하는 문제입니다. 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net #include using namespace std; int fibo(int num) { int result = num; if (result == 0) { return 0; } else if (result == 1) { return 1; } else { return fibo(result - 1) + fibo(result - 2); } } int .. 2022. 7. 27.
[기초] 자료구조 / 큐(queue)와 덱(deque), 문자열 큐(queue) 한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 자료구조 먼저 넣은 것이 가장 먼저 나오기 때문에 First In First Out (FIFO) 라고도 합니다. - push : 큐에 자료를 넣는 연산 - pop : 큐에서 자료를 빼는 연산 - front : 큐의 가장 앞에 있는 자료를 보는 연산 - back : 큐의 가장 뒤에 있는 자료를 보는 연산 - empty : 큐가 비어있는지 아닌지를 알아보는 연산 - size : 큐에 저장되어있는 자료의 개수를 알아보는 연산 그림에서 빨간색 1번이 front로 가장 앞에 있는 자료이고 빨간색 3번이 back으로 가장 뒤에 있는 자료입니다. 큐도 스택과 같이 이미 구현된 라이브러리를 사용할 수있습니다. C++의 경우 STL의 queue .. 2022. 7. 26.
[기초] 자료구조 / 스택(stack) 스택(stack) 한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조 마지막으로 넣은 것이 가장 먼저 나오기 때문에 Last In First Out (LIFO) 라고도 합니다. - push : 스택에 자료를 넣는 연산 - pop : 스택에서 자료를 빼는 연산 - top : 스택의 가장 위에 있는 자료를 보는 연산 - empty : 스택이 비어있는지 아닌지를 알아보는 연산 - size : 스택에 저장되어있는 자료의 개수를 알아보는 연산 그림에서 top은 6이고 4가 push 되면 top은 4가 됩니다. 빨간색 숫자가 자료가 들어온 순서를 나타냅니다. 스택은 이미 구현된 라이브러리를 사용할 수있습니다. C++의 경우 STL의 stack JAVA의 경우 java.util.Stack 직접 구현할 경우 배열을 이용해.. 2022. 7. 26.
C++ 백준 BOJ 9012 괄호 입력받은 문자열이 바르게 구성된 괄호 문자열(VPS)인지 판단하는 문제입니다. 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net #include #include using namespace std; void checkVPS(string p){ stack checkP; for(int i = 0; i < p.size(); i++){ if(p[i]=='('){ checkP.push('('); } else{ if(checkP.empty()){ checkP.push(')'); } else .. 2022. 7. 25.
C++ 백준 BOJ 2960 에라토스테네스의 체 에라토스테네스의 체는 소수를 찾는 유명한 알고리즘입니다. 에라토스테네스의 체 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 아주 큰 범위에서 소수를 판별하는 문제는 코딩테스트에서도 자주 나오는 문제인데 이때 사용하는 알고리즘입니다. 1929번 소수 구하기 문제를 풀기 전 먼저 알아야 합니다. 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net #include using namespace std; bool arr[1001]; int main() { int N, K, val = 0, count = 0; //count 는 k번째 수를 판별 for (int i = 0;.. 2022. 4. 30.