알고리즘/백준 49

백준 12789 도키도키 간식드리미

https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 스택을 하나 이용해서 주어진 N개의 수들을 순서대로(오름차순) 만들 수 있는지를 판단하는 문제다. 줄서있는 사람의 차례인 경우 통과시키고 차례가 아닌 경우 스택에 집어넣는다. 스택에 쌓다보면, 현재 차례인 사람을 1)줄 서있는사람, 2)스택에 쌓인사람 두 경우 모두 비교해줘야한다. 둘 중 한명의 차례라면 그대로 내보내면 되고, 둘 다 아닌 경우엔 일단 스택에 넣어주는 수밖에 없다. #includ..

알고리즘/백준 2021.12.24

백준 18100 Думский регламент

https://www.acmicpc.net/problem/18100 18100번: Думский регламент Выведите , если существует корректный порядок проведения заседания, который мог привести к такой записи, и , если ни при каком коррек www.acmicpc.net "마우스 우클릭 + T "가 필요한 순간이다. 문장의 갯수 K가 입력 첫째줄에 나온다. 나머지 K줄에 "Add @"또는 "Vote @"가 나온다.(@는 a - z 중 하나의 알파벳이다. 정당의 이름? 이라고 하는 것 같다.) 하나의 정당이 안건을 추가하면(Add @), @에 대해서만 투표해야한다.(Vote @) 안건이 1개이상 ..

알고리즘/백준 2021.12.24

백준 15815 천재 수학자 성필

https://www.acmicpc.net/problem/15815 15815번: 천재 수학자 성필 길이가 100이 넘지 않는 수식이 예제 입력과 같이 공백 없이 입력된다. 수식은 0부터 9까지의 숫자와 연산자 '+', '-', '*', '/' 로만 이루어져 있다. 또한, 수식의 계산 중간 과정의 모든 결과는 항상 2 www.acmicpc.net 후위 표기 방식의 수식을 계산하는 문제다. 연산자 +, -, *, / 모두 이항연산자(피연산자 2개 사용)이므로, 1. 수식을 차례로 스택에 넣으면서 2. 연산자를 만나는 경우, 스택에서 피연산자 2개를 꺼내 계산한 후, 결과를 스택에 넣어준다. #include #define fio cin.tie(0)->sync_with_stdio(0) using namespa..

알고리즘/백준 2021.12.24

백준 11899 괄호 끼워넣기

https://www.acmicpc.net/problem/11899 11899번: 괄호 끼워넣기 첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다. www.acmicpc.net '('가 나타나는 경우 스택에 넣어주고 ')'가 나타나는 경우 스택에서 빼주면 된다. 고려해야 할 것은 다음과 같다. 1. 충분한 '('가 없는데 ')'가 나오는 경우 -> 앞에 '('를 넣어줘야한다. 2. 마지막이 1개 이상의 '('으로 끝나는 경우 -> 뒤에 ')'를 넣어줘야한다. 이 문제의 경우 굳이 stack을 이용할 필요 없이, 정수 변수 cnt를 이용했다. #include #define fio cin.tie(0)->sync_with_..

알고리즘/백준 2021.12.23

백준 3986 좋은 단어

https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 단어 위로 아치형 곡선을 그렸을 때, 선이 교차하지 않는 '좋은 단어'를 판별하는 문제다. 스택관련 문제에서 자주보이는 괄호문제와 같은 문제다. #include #define fio cin.tie(0)->sync_with_stdio(0) using namespace std; #include bool is_good(const string& S){ stack stack_; //스택에 넣자// 1. 비어있으면 넣..

알고리즘/백준 2021.12.23

백준 18511 큰 수 구성하기

https://www.acmicpc.net/problem/18511 18511번: 큰 수 구성하기 첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각 www.acmicpc.net 1~9의 주어진 K개의 자연수를 이용해서, N보다 작거나 같은 수 중 가장 큰수를 구하는 문제다. 첫 시도는 1) N의 자릿수를 구하고 2) 자릿수 만큼 재귀적으로 K에 속한 수를 하나씩 추가한 정수를 만든 후 3) 만든 수를 모아놓는 vector에서 조건에 맞는(N보다 작거나 같은)수 중 큰 수를 구하려 했다. 틀렸다. 이유는 범위를 잘못 책정했다는 것이다. 1..

알고리즘/백준 2021.12.22

백준 17478 재귀함수가 뭔가요?

https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 재귀함수가 무엇이냐는 문제다. 출력만 보면 정신 나갈 것 같다. "를 출력하려면 \"로 표현해야 한다. 이스케이프 문자 (escape char)라고 하는 백슬래쉬(\)를 적어줘야 한다. #include using namespace std; void print_(int n){ for(int i=0; i

알고리즘/백준 2021.12.22

백준 6603 로또

https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 6)개 고른 후, 그 중에서 6개의 숫자를 고르는 문제다. bitset이 깔끔할 것이라 생각했지만, 오늘은 재귀 공부하는 날이다. 숫자를 하나씩 추가하거나 제거하면서 조합을 만든다. bool visited 배열을 통해 특정 숫자의 포함 여부를 판단할 수 있다. #include using namespace std; #include bool visited[50]; //..

알고리즘/백준 2021.12.22

백준 5568 카드 놓기

https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 만들 수 있는 정수를 모두 구하는 문제다. 지문에 "이렇게 한 정수를 만드는 조합이 여러 가지 일 수 있다."라는 말이 적혀있다. 중복을 없애자. #include using namespace std; #include #include #include set ans; bool visited[11]; void recur(const vector& v, int depth, int K, int now, const string& S){ if(depth == K){ ans.insert(S); }else{ ..

알고리즘/백준 2021.12.22