본문 바로가기

전체 글

(72)
[백준] 5076번: Web Pages https://www.acmicpc.net/problem/5076 5076번: Web Pages Input will consist of a number of lines of HTML code, each line containing from 0 to 255 characters. The last line will contain a single # character – do not process this line. Within the text of each line will be zero or more tags. No angle bracket will b www.acmicpc.net 괄호검사와 비슷한 맥락으로 스택만 사용하면 쉽게 풀 수 있는 문제이다. 하지만 문자열 파싱이 필요하므로 훨씬 복잡해진 문제. 파..
[백준] 2304번: 창고 다각형 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 빈 칸을 사이에 두고 주어진다. L과 H는 둘 다 1 이상 1,000 이하이다. www.acmicpc.net 일단 막대 정보를 배열에 저장한 뒤, 막대를 왼쪽부터 오른쪽으로 훑으며 top보다 막대가 긴 경우 스택1에 push 해준다(다각형의 왼쪽 영역) 그 다음 이번엔 막대를 오른쪽부터 왼쪽으로 훑으며 top보다 막대가 긴 경우 스택2에 push 해준다(다각형의 오른쪽 영역) 탐색이 끝난 후, 스택1과 스택2..
[백준] 1725번: 히스토그램 https://www.acmicpc.net/problem/1725 1725번: 히스토그램 문제 히스토그램에 대해서 알고 있는가? 히스토그램은 아래와 같은 막대그래프를 말한다. 각 칸의 간격은 일정하고, 높이는 어떤 정수로 주어진다. 위 그림의 경우 높이가 각각 2 1 4 5 1 3 3이다. 이러한 히스토그램의 내부에 가장 넓이가 큰 직사각형을 그리려고 한다. 아래 그림의 빗금 친 부분이 그 예이다. 이 직사각형의 밑변은 항상 히스토그램의 아랫변에 평행하게 그려져야 한다. 주어진 히스토그램에 대해, 가장 큰 직사각형의 넓이를 구하는 프로그램을 www.acmicpc.net 스택 연습문제 어처구니 없는 실수로 시간을 많이 잡아먹은 문제이다. 스택의 top 보다 높이가 높은 경우에만 스택에 push하고 (이렇게..
[백준] 1935번: 후위 표기식2 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. (3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 정수이다) www.acmicpc.net 후위 표기식으로 쓰여진 식을 계산하는 문제. 중위 표기식을 후위 표기식으로 변환해야 했던 이전문제보다 훨씬 쉽다. 식의 글자를 하나씩..
[백준] 1918번: 후위 표기식 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식은 주어지지 않는다. 표기식은 알파벳 대문자와 +, -, *, /, (, )로만 이루어져 있으며, 길이는 100을 넘지 않는다. www.acmicpc.net 스택 하면 무조건 나오는 중위 표기식을 후위 표기식으로 바꾸는 문제 자료구조 시간에도 배웠지만 연습삼아 풀어보았다. 연산자별로 우선 순위를 정해놓고 식에서 연산자가 나오면 스택에 저장한다. 그리고 다음 연산자가 나올 때마다 스택의 연산자와 우선순위를 비교해서 작거..
[백준] 5430번: AC https://www.acmicpc.net/problem/5430 5430번: AC 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 숫자의 순서를 뒤집는 함수이고, D는 첫 번째 숫자를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. www.acmicpc.net 문제는 간단하다 숫자 리스트를 입력받은 후, R이면 리스트의 순서를 뒤집어주고 D면 맨 앞 원소를 버린다. 덱을 이용하면 굳이 리스트의 순서..
[백준] 3078번: 좋은 친구 https://www.acmicpc.net/problem/3078 3078번: 좋은 친구 문제 상근이는 환갑을 바라보던 나이에 수능 시험을 다시보고 교대에 입학했고, 초등학교 선생님으로 취직했다. 상근: 요즘 애들은 친구를 사귀지 않나봐. 내가 앞에서 보고 있으면, 친구가 있는 학생이 별로 없는 것 같아. ??: 오빠! 오빠는 말콤의 친구와 성적이라는 책 안 읽어 봤어? 이 책에는 성적과 친구가 무슨 관계가 있는지 나와. 요즘 애들은 친구를 사귀기 전에 먼저 그 친구의 반 등수를 살펴봐. 말콤은 이 연구를 하기 위해서 6년동안 초등학교에서 선 www.acmicpc.net 큐 연습문제. 풀이를 보고 구현했다. 그냥 배열로 풀면 시간복잡도가 O(N^2)이 되는데 N이 300,000 이하이므로.. 배열로는 풀..
[프로그래머스] 주식가격 https://programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택을 이용하면 효율적으로 풀 수 있는 문제. 가격이 떨어지지 않는 동안 스택에 가격 정보를 담아두고 가격이 떨어지면 스택을 pop하는 방식으로 풀면 된다. #include #include #include using namespace std; vector solution(vector prices) { vector answer(prices.size()); stack price_stack; price_stack...