목록코딩테스트/백준 (46)
Deff_Dev
문제풀이이 문제는 1부터 입력된 N까지 번호들을 큐에 삽입하고,카드 버리기맨 앞 카드 뒤로 보내기위 규칙이 반복되는 문제로, 마지막 남은 번호를 출력하는 문제이다. #include #include using namespace std;queue q;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i = 1;i
문제풀이#include #include #include using namespace std;queue q;int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i = 0; i > input; int result = 0; if(input == "push") { cin >> input; int pushNum = stoi(input); q.push(pushNum); continue; } if(input == "pop" || input == "front") { result = q.empty() ? -1 : q.front(); if (!q.empty() && input == "pop") ..
문제 KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)으로 동시에 레이저 신호를 발사한다고 하자. 그러면, 높이..
문제풀이stack과 queue를 이용하여 해당 문제를 풀이했다. 처음 입력 받은 수를 queue에 저장한다.1부터 stack에 저장하고 queue의 front() 값과 비교하여 같지 않을 때까지 stack과 queue의 값을 pop한다.n까지 2번을 반복한다.#include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; queue q; for (int i = 0; i > input; q.push(input); } vector answer; stack stack; for (int i = 1; i
문제풀이Stack을 이용하여 해당 문제를 풀이했다. 입력된 수가 0이 아니라면 push, 0이라면 pop을 했고, 이후 스택에 있는 모든 수를 더한 뒤 출력했다.#include #include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); int k, input; cin >> k; stack stack; for (int i = 0; i > input; if (input == 0) stack.pop(); else stack.push(input); } int sum = 0; while (!stack.empty()) { sum += stack.top(); stack.pop(); } cout
문제 풀이이 문제는 에디터에 입력된 문자열과 명령어들을 토대로 최종 문자열을 출력하는 문제이다. List를 이용하여 해당 문제를 풀이했다. 입력된 문자열을 Char 형식의 List에 저장하고 cursor를 List의 마지막 위치로 저장한다.이후, 명령어를 입력하고, 입력된 명령어에 따라 명령을 수행한다. else if (c == 'B'){ if (cursor != editor.begin()) { cursor--; cursor = editor.erase(cursor); }} 여기서 문자를 삭제할 때, cursor에 erase 반복자를 저장하는 이유 ?cursor 위치의 값을 삭제한다면 cursor는 유효하지 않은 노드를 가르키고 있기 때문에 삭제된 요소 다음 위치를 가리키는 새로운 반복자를 저장해야한다..
문제입력된 문자열을 토대로 비밀번호를 출력하는 문제이다. 입력에는 3가지의 규칙이 존재한다.' ' > ' 은 커서 오른쪽 이동' - ' 은 커서 바로 앞 문자 지우기풀이vector를 이용하여 해당 문제를 풀이했지만 시간 초과가 났다.더보기#include #include #include using namespace std;int cursor = 0;void GetPassword(string input) { int length = input.length(), cursor = 0, n= 0; vector password; for (int i = 0; i ') { int l = password.size(); cursor = min(cursor + 1, l); } else if (c == '-') { ..
문제https://www.acmicpc.net/problem/13300문제 설명정보 초등학교에서는 단체로 2박 3일 수학여행을 가기로 했다. 여러 학년이 같은 장소로 수학여행을 가려고 하는데 1학년부터 6학년까지 학생들이 묵을 방을 배정해야 한다. 남학생은 남학생끼리, 여학생은 여학생끼리 방을 배정해야 한다. 또한 한 방에는 같은 학년의 학생들을 배정해야 한다. 물론 한 방에 한 명만 배정하는 것도 가능하다.한 방에 배정할 수 있는 최대 인원 수 K가 주어졌을 때, 조건에 맞게 모든 학생을 배정하기 위해 필요한 방의 최소 개수를 구하는 프로그램을 작성하시오.예를 들어, 수학여행을 가는 학생이 다음과 같고 K = 2일 때 12개의 방이 필요하다. 왜냐하면 3학년 남학생을 배정하기 위해 방 두 개가 필요하고..