목록분류 전체보기 (259)
Deff_Dev
문제풀이이 문제는 쇠막대기를 레이저로 자를 떄, 몇 개의 막대기가 나오는지 출력하는 문제이다. 입력은 ' ( ' , ' ) ' 두 가지이다.' ( ' 뒤에 바로 ' ) '가 온다면 해당 자리에 레이저를 쏜다는 것이고, 이외의 입력은 막대기를 의미한다. ex) "(())" 입력은 ㅡ ㅡ 처럼 막대기 2개가 나온다.예제의 입력을 본다면 위 그림과 같이 17개의 막대기가 나온다. 해결 방법스택을 이용하여 풀이했고 입력을 받은 뒤, 입력된 문자열을 탐색하면서 레이저를 감별하고 막대기를 자른다.' ( ' 이라면 bar 갯수를 + 1 한 뒤, 스택에 푸시한다. (flag 변수 true)' ) '이라면 막대기 끝 or 레이저이기 때문에 bar 갯수를 - 1 한다.flag 변수가 true일 때는 레이저이기 때문에..
문제풀이getline 함수를 이용하여, 공백을 포함하여 입력을 받은 뒤, Stack을 이용하여 균형잡인 문자열인지 판단했다. 이때, stack에 임의 값 '0'를 삽입(empty 처리를 피하기 위해)하고 모든 연산이 끝난 뒤, stack의 크기가 1일 경우에 yes, 아니라면 no를 출력한다.#include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); while(true) { string input; getline(cin, input); if(input == ".") break; stack stack; stack.push('0'); for(int i = 0; i
문제문제 설명 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다.지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다.첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다.왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다.오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다.큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 n * n으로 이루어진 2차원 배열을 1차원 배열로 바꾼 뒤, left ~ right 위치에 있는 요소들을 반환하는 문제이다. 틀린 접근더보기2차원 배열을 만든 뒤, 1차원 배열로 바꾸고 left ~ right 범위의 요소를 반환하는 방법으로 풀이했다.O(n^2)으로 풀이했더니 당연히 시간초과가 나왔다.#include #include using namespace std;vector solution(int n, long long left, long long right) { vector answer; vector> map; ..
문제풀이이 문제는 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