목록Algorithm (428)
Mini

https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net * 의사코드 #include using namespace std; int n,ret; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); stack s; string str; cin >> str; for (int i = 0; i < str.size();++i) { if (str[i] == '(') { s.push('('); } else {..
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net *괄호검사 알고리즘 왼괄호 ->push 오른괄호->빈스택인경우 -> wrong // -> 올바른짝이있는경우 ->pop ->안맞는짝인경우 ->wrong ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 작업후 (왼괄호가 )남아있는경우 ->wrong ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 유효하면 yes 아니면 no출력 * 내코드 #include using namespace std; string ..
https://www.acmicpc.net/problem/5430] 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net *예외처리방법 최악입력 : [] 일때 별도로 처리해준다. *string find,+=시간복잡도 find : O(n) for(i=0~n) s+='A' //O(n) for(i=0~n) s=s+'A' //O(n^2) 결론 : += 를 사용해라. * 의사코드 1.배열을 파싱해서 데큐에 담기 2.명령어를 하나씩돌면서 R이면 참조위치를 앞뒤 바궈주기 D이면 참조위치에 맞춰서 pop하기 3. 결과값완성하기 참조위치가 앞이면 d의 원소 앞부터 추가 참조위치가 뒤면 ..

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..
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; ..
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
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 >>..
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..