전체 글 291

[백준 1728번 C++] 오큰수

17298번: 오큰수 (acmicpc.net) 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제를 읽어보니 직전에 풀었던 로직이 [탑] 문제랑 거의 유사하다 탑은 왼쪽과 비교했다면, 오큰수는 오른쪽을 비교해야 하는 게 다르다 [Algorithm] 백준 17298 오큰수 c++ (tistory.com) [Algorithm] 백준 17298 오큰수 c++ https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. ..

카테고리 없음 2023.09.10

[백준 2493번 C++] 탑

2493번: 탑 (acmicpc.net) 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 탑을 배열로 입력을 받아서 가장 오른쪽부터 자신보다 높은 가장 가까운 왼쪽 탑을 새로운 배열에 저장시키면 된다 #include #include using namespace std; int main() { int n, m; cin >> n; vector v; vector r; for(int i=0; i> m; v.push_back(m); } r.push_back(0); for(int i=1; i=0){ //v[i]보다 높..

[백준 10799번 C++] 쇠막대기

10799번: 쇠막대기 (acmicpc.net) 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net () 사이에 있는 '('의 개수를 count해서 다음 ()로 인해 잘렸을 때 몇개의 조각이 생겨났는 지 세어야한다. ()가 나오면 그때까지 열려있는 괄호 수를 sum에 더하는 식으로 해줬더니 성공! #include #include #include using namespace std; int main() { vector v; string s; int cnt=0; int sum=0; cin >> s; for(int i=0; i

[백준 1874번 C++] 스택 수열

1874번: 스택 수열 (acmicpc.net) 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 제일 해석하기 어려웠던 문제(?) #include #include #include using namespace std; int main() { stack s; vector v; int n, m; int cnt=1; cin >> n; for(int i=0; i> m; while(cnt

[백준 1406번 C++] 에디터

1406번: 에디터 (acmicpc.net) 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 중간 삽입/삭제가 일어나기 때문에 연결 리스트로 한번 풀어봄 #include #include #include using namespace std; int main() { string s; int m; char op, add; list l; cin >> s >> m; for(int i=0; i op; switch(op){ case 'L': if(cur!=l.begin()) cur--; break; case 'D': if(..

[백준 1935번 C++] 후위 표기식2

1935번: 후위 표기식2 (acmicpc.net) 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 후위 표기식에 대해 알아보자,, 후위표기식 (Postfix expression) 계산법 (tistory.com) 후위표기식 (Postfix expression) 계산법 수학에서 사용되는 사칙연산에는 여러가지 규칙이 있다. 예를들어 곱하기와 나누기는 다른 연산보다 우선시 되어 하고, 괄호가 있는 경우에는 모든 연산의 최우선이 된다. 이러한 규칙들로 인 siyoon210.tistory.com 후위표기식 ..

[백준 10773번 C++] 제로

10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 뚱땅뚱땅 비교적(?) 빠르게 써내려간 코드 근데 stack에는 제대로 저장이 다 되는 데 마지막 for문에서 sum을 구하려는 데 스택에 저장된 원소들의 합만 이상하게 나옴 문제의 코드 #include #include #include using namespace std; int main() { stack s; int k, n, sum=0; cin >> k; for(int i=0; i> ..

[백준 9012번 C++] 괄호

9012번: 괄호 (acmicpc.net) 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 괄호 문제는 스택의 가장 대표적인 유형 문제의 나의 코드 첫번째 input은 잘 되는 데, 두번째부터는 input이 이상하게 들어가짐 #include #include #include using namespace std; int main() { int n; string input; stack s; cin >> n; for(int i=0; i> input; while( !s.empty() ) ..

[백준 10828번 C++] 스택

10828번: 스택 (acmicpc.net) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 먼저 스택을 불러와주는 헤더파일을 불러와줌 [C++][STL] Stack 기본 사용법 및 예제 (tistory.com) [C++][STL] Stack 기본 사용법 및 예제 인트로 오늘은 C++의 STL중 하나인 Stack(스택) 기본 함수에 대해서 알아보도록 하겠습니다. 목차 1. 스택(Stack)이란? 2. 스택 헤더 파일 3. 스택 기본 함수 1. 스택이란? 스택(Stack)은 대표적인 LIFO(L..

[백준 17087번 C++] 숨바꼭질 6

17087번: 숨바꼭질 6 (acmicpc.net) 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net 동생들의 위치를 vector a에 넣어두고, 수빈과의 위치 차이를 vector dif에 넣었다. 따라서 vector dif에는 수빈이 동생을 찾으러 걸어야하는 걸음 수만이 저장되므로 vector dif에 저장된 수들의 최대 공약수를 찾으면 D의 최댓값을 구할 수 있다. #include #include #include using namespace std; int main(){ int..