본문 바로가기

STL19

[C++] 백준 2800번 : 괄호 제거 https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제 풀이 DFS로 문자열을 구현하면 되는 문제였다. check 함수를 통해서 백트래킹 중 일정 조건을 만족시킬 때 셋에 값을 추가하도록 한다. 사전 배열로 출력하기 위해서 set을 사용했다! 느낀 점 처음에 갈피를 제대로 못 잡아서 살짝 헤매던 문제이다. 조금 생각해보니 전형적인 백트래킹 문제였다. 또, 자료구조인 척하는데 딱히 자료구조 같지는 않다. 코드 #in.. 2021. 10. 11.
[C++] 프로그래머스 : 더 맵게 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제 풀이 우선순위 큐를 사용하면 아주 쉽게 풀 수 있는 문제이다. 큐를 우선 오름차순으로 정렬해준다. 맨 앞에 오는 값들은 스코빌 지수가 작은 순서대로 위치할 것이고 맨 앞의 스코빌 지수가 기준인 K보다 크다면 그 이후의 모든 값들은 K보다 크다. 따라서, 맨 앞의 두 개를 계산해주고 K보다 큰지만 따져주면 된다. 큐의 크기가 1인데 K보다 낮다면.. 2021. 10. 7.
[C++] 백준 1158번 : 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 풀이 https://codinghejow.tistory.com/91와 같은 문제이다! 느낀 점 이번에 코테 준비를 하면서 다시 풀어봤던 문제이다. 이번에 한번 정리함으로써 큐에 대한 이해도가 확실하게 향상된 것 같다. 코드 #include #include using namespace std; int n, k; queue q; void func(int n, int k) { for (int i = 1; i 2021. 9. 24.
[C++] 백준 10816번 : 숫자 카드 2 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 풀이 숫자 카드의 개수를 구하는 문제이다. map을 구현하면 아주 쉽게 풀 수 있다. 느낀 점 다른 분들은 lower bound와 upper bound로 풀었다. C++ STL에서 지원하기 때문에 아주 쉽게 풀 수도 있다. 나는 보자마자 생각난 게 map이어서 그냥 map으로 풀었다! 코드 #include #include using namespace std;.. 2021. 8. 5.
[C++] 백준 5430번 : AC https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 풀이 이 문제에서 포인트는 세 가지로 나누어 볼 수 있다. 1. string을 입력받아서 덱에 저장 2. 에러가 발생하는 조건 3. 시간제한이 단 1초 입력받은 숫자들은 string이므로 stoi 함수를 사용해서 int로 변환해주어야 한다. 주의할 점은 단순히 isdigit으로 숫자인지 아닌지 분류한다면 두 자리 이상의 수를 제대로 덱으로 가져올 수 없다. 따라서 콤마( , )와 닫는 괄호 ( ] )가 등장한다면 int로 변환해서 덱에 push 해.. 2021. 7. 26.
[C++] 백준 1021번 : 회전하는 큐 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 문제 풀이 문제에서 3가지 연산이 주어진다. 1번 연산은 첫 번째 원소를 뽑는 연산, 2번 연산은 왼쪽으로 회전, 3번 연산은 오른쪽으로 회전이다. 문제의 포인트는 어느 방향으로 회전할지 정하는 것이다. 타깃이 되는 값의 인덱스를 저장해 begin으로부터의 거리(left)와 end로부터의 거리(right)를 비교한다. 타깃 값을 저장하는 큐가 빌 때까지 연산을 반복한다! left > right.. 2021. 7. 25.