목록분류 전체보기 (31)
Hello World!
문제 링크: 백준/BOJ https://www.acmicpc.net/problem/1874 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 차분하게 스택의 동작을 따라가면 쉽게 풀리는 문제다. 케이스를 크게 3가지로 분류했다. 1. if stack.top() < target, then target이 나올 때까지 stack에 push 2. if stack.top() == target, then pop 3. if stack.top(..
문제 링크: 백준/BOJ https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트라이크 개수를 나타내는 정수와 볼의 개수를 나타내는 정수, 이렇게 총 세 개의 정수가 빈칸을 사이에 두고 주어진다. www.acmicpc.net 스터디 첫날 골랐던 문제였다. 그때는 손도 못 대던 문제였는데 지금은 뚝딱 푸는 게 신기하다. 지금 못푸는 문제들도 나중에 그랬으면....ㅎㅎ 정말 우직하게 완탐을 돌렸다. 123부터 987까지 가능한 수(0포함 X && 세자리수 모두 달라야 됨)가 주어진 질..
문제 링크: 백준/BOJ https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식�� www.acmicpc.net 오랜만에 다시 풀어봤는데 역시 만만하지 않았다. 후위 표기식 문제는 작년에 학교 자구 시간 실습에서도 다루고, 혼자서도 풀어봤고, 최근 듣는 실습수업에 또 등장했는데... 이쯤 반복했으면 그냥 눈감고도 풀려야 하는 거 아닌가.........ㅠㅠ 하지만 처참하게 4번의 시도만에 통과했다. 멍청한 주인을 만나서 몸이 고생한다. 문제를 풀기 전 후위 표기식에 대해 ..
queue 1. queue queue(큐)는 출구와 입구가 양쪽에 각각 있는 선형 자료구조이다. 즉, front에 데이터를 삽입하면 rear에서 빠져나온다. 이는 큐의 FIFO(First In First Out) 성질을 보장해주는데 먼저 들어간 데이터가 먼저 나온다는 뜻이다. 큐의 구조는 아래 그림과 같다. 이제 그림을 통해 삽입 과정을 이해해보자. int형 데이터를 담는 큐에 5, 4, 2, 1을 순서대로 push해보자. 제일 먼저 들어간 5가 rear, 제일 마지막에 들어간 1이 front에 위치하고 있다. 그렇다면 처음 삭제 연산이 수행됐을 때 삭제되는 원소는 무엇일까? rear에 위치하는, 즉 가장 먼저 들어온 5이다. 만약 삭제 연산이 2번 연속 수행된다면 5와 4가 차례로 삭제되고, 큐는 아래..
stack 1. stack stack(스택)은 출입구가 하나로 통일된 선형 자료구조이다. 즉, 데이터의 삽입 및 삭제가 한 곳에서만 일어난다. 스택은 위의 그림처럼 한 쪽(우리는 이를 top이라 부른다)만 뚫려 있는 기다란 통과 같은 구조이다. 그림을 통해 삽입 과정을 이해해보자. int형 데이터를 담는 스택에 차례로 5, 4, 2, 1을 삽입해보자. 입구가 하나이므로 삽입하는 순서대로 그림처럼 스택에 쌓일 것이다. 제일 위에 있는 원소 1은 당연히 제일 마지막에 삽입한 원소이다. 이 원소의 위치를 스택의 top이라 부른다. 만약 다음과 같은 스택에서 2에 바로 접근할 수 있을까? 안된다. 2에 접근하기 위해서는 위에 쌓여있는 1을 빼내야만 한다. 1을 빼내고 나면 그다음 원소 2가 top에 위치한다. ..
문제링크: 백준/BOJ https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 간단한 문제였다. 뒤에 줄을 선 사람은 앞에 줄 선 사람이 돈을 인출하는데 걸린 시간을 함께 기다려야 하므로, 앞에 줄을 설수록 걸리는 시간이 적게 배열을 정렬한 뒤 각각의 걸리는 시간을 누적해서 더해주면 끝나는 문제이다. /* 20200329 baekjoon 11399번: ATM */ #include #include using namespace std; int arr[1000]; int time[100..