분류 전체보기
![백준 1021 cpp // 데큐, 규칙찾기, find함수 사용법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwT6l6%2FbtsrS5Gxz1u%2Fqk4LhnK6gQtqLOHqDhAeaK%2Fimg.png)
백준 1021 cpp // 데큐, 규칙찾기, find함수 사용법
https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net ※ 주의 : pop은 앞에서만 가능. *의사코드 - 모두 앞으로 보낼때 vs 모두 뒤로 보낼때 이동횟수가 적은것을 선택한다. while(m-- // 목표) 1. while(앞!=목표){ cnt1++, q1, 뒤로보내는 로직 } while(앞!=목표){ cnt2, q2, 앞으로 보내는로직 } 2. 두 카운트 중 최소값 선택 d=최소값인큐 d.pop_front() ret+=cnt *내 코드 #in..
백준 10866 cpp // 덱 사용법
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net * 덱? 양방향으로 넣고 뺄수있는 큐를 말한다. #include using namespace std; int n; deque d; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 1; i > op; if (op == "push_front") { int temp = 0; ..
백준 2164 cpp// 큐 사용방법
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net #include using namespace std; int n; queue q; int main(){ cin >> n; for (int i = 1; i
백준 18258 cpp // 입력이 많을때 해결방법
https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net * 입력이 많을때 해결방법 printf 와 싱크를 끊어 입력속도 상승 입력버퍼를 끊어 입력속도 상승 ios::sync_with_stdio(0); cin.tie(0); 안하면 시간초과 난다.. #include using namespace std; int n; queue q; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >>..
백준 2493 cpp // 스택 idea 발상, 초기예외 처리하는법 : 범위밖의 객체를 push하라
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net *의사코드 및 전체코드 #include using namespace std; int n; stack s;//높이,인덱스 int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); /** * 1. 맨왼쪽에 {100,000,001 / idx 0} 의 탑이있다고 가정 => 0을 리턴하도록 * 2. 나보다 작은 타워는 쓸모없음 -> 모두 p..
백준 1874 cpp // 유효스택검사 알고리즘
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net * 정처기 단골문제 : 다음 중 stack 의 출력결과로 나올수없는것은? 문제와 유사하다. * 1씩 증가 구현방법 해결 : int cnt++ 벡터나 배열로 구현할 필요가 없다. *의사코드 1. while(n--) // 모든타겟에대해 2. while(cnt 불가능 , 끝내기 4. 가능하면, pop, "-" ex) ta..
백준 10773 cpp // 스택사용법
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net #include using namespace std; int k,ret; stack s; int main() { cin >> k; for (int i = 0; i > op; if (op == 0) { s.pop(); } else { s.push(op); } } while (s.size()) { ret += s.top()..
백준 1919 cpp // 문자열 차이검사는 +1, -1로 비교하라
https://www.acmicpc.net/problem/1919 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net *의사코드 1. s1 문자는 +1 // v[a]++ 2. s2 문자는 -1 // v[a]--; 3. 0이 아닌 v에 대해 == 서로다른 문자에 대해 : ret+= abs(v[a]) // s2는 음수이므로 절대값으로 해결 #include using namespace std; int ret,a[26]; string s1, s2; int main() { ios_base::syn..