목록Baekjoon/Gold (80)
GitHubSeob

문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제풀이 'R'을 입력받을 때 마다 reverse를 하면 시간초과가 난다. 'D'를 입력받을때 마다 vector.erase로 지웠더니 시간초과가 난다. deque를 사용하지 않고 시작 인덱스인 start, 끝 인덱스인 end를 이용하여 풀었다. getline과 istringstream으로 쉼표로 구분하여 string을 자르고 int형 vector에 입력한다. rev라는 변수를 두어 'R'을 입력받으면 * -1을 하여 거꾸로 됐는지, 정상적으로 됐는..

문제 https://www.acmicpc.net/problem/21942 21942번: 부품 대여장 첫 번째 줄에 부품 대여장에 작성된 정보의 개수 $N$, 대여기간 $L$, 벌금 $F$이 공백으로 구분되어 주어진다. 대여기간 형식은 DDD/hh:mm으로 DDD는 일, hh는 시간, mm은 분을 의미한다. (000/00:00 는 주어 www.acmicpc.net 문제풀이 날짜와 시간을 입력받으면 모두 분으로 바꾼다. string을 substr을 이용하여 각각 월, 일, 시, 분을 파싱 하고 stoll을 통해 long long으로 형 변환을 한다. map을 이용한다. key부분은 pair을 이용해 {이름, 부품}을 입력받고, value에는 시간을 입력받는다. map[{이름, 부품}]값이 비어있으면 빌린 시..

문제 https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 문제풀이 multiset을 이용하여 풀었다. 입력받으면 multiset에 집어넣고 홀수번째 수를 입력받을 때마다 iterator을 이용하여 한 칸씩 중앙값을 가리킬 때까지 iterator를 증가시키고 해당 값을 answer에 push 한다. 모든 입력을 받았으면 answer의 크기와 answer의 모든 값들을 출력한다. 코드 #include #include #in..

문제 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제풀이 map과 multiset을 이용한다 multiset은 난이도가 같으면 문제 번호가 높은 순, 난도가 다르면 난이도가 높은 순부터 낮은 수로 정렬하도록 cmp를 따로 만들었다. (내림차순) 문제 번호와 난이도를 입력받으면 multiset, map에 집어넣는다. recommend 1을 입력받으면 iterator가 multiset의 처음을 가리키게 되고 문제..

문제 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제풀이 단순히 모든 값을 입력받고 N번째 큰 수를 출력하려 했는데 메모리 초과가 났다. 그래서 N번째 까지는 값을 모두 입력받고, 그다음부터는 입력받을 값을 넣고 pop을 하여 우선순위 큐의 크기를 N으로 유지했다. 모든 값을 입력받았으면 top을 출력하면 된다. 우선순위 큐는 내림차순으로 정렬하기 위해 greater를 넣었다. 코드 #include #include using namespace s..

문제 https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 문제풀이 map을 이용해서 풀었다. I 숫자는 입력이므로 cin >> oper >> n을 통해 I와 값을 입력받고 map인 m을 선언하였으므로 m[n]의 값을 1 증가시킨다. 연산이 D 1일 경우 최댓값을 삭제해야 한다. 그래서 iterator인 iter을 선언하고 m의 end부분으로 간 뒤 한 칸 앞으로 이동(--m.end())한다. 동일한 값을 입력받을 수 있으므로 최댓값이 몇 개 입..

문제 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 문제풀이 알파벳 순서는 서로 바뀌는 경우가 없으므로 입력받으면 바로 출력한다. 그 외의 경우는 스택을 이용하여 출력 순서를 정한다. '+' 또는 '-'인 경우 다음 연산자를 생각해야 하므로 바로 출력을 하지 않고 스택에 push 한다. 그다음 ')'를 만나거나, '+' 또는 '-'가 연속으로 두 번 오는 경우에만 후위식으로 바꾸면 된다. '*' 또는 '/' 인경우 바로 뒷 문자가 '('이..

문제 https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제풀이 입력을 받는 vectortower, 답을 저장하기 위한 vectoranswer, 스택을 쌓기 위해 stacks를 선언한다. 스택 s에는 타워의 번호 값을 저장한다. for문을 통해 가장 왼쪽에 있는 타워부터 오른쪽으로 이동하면서 비교를 한다. 만약 현재 스택의 top() 부분의 타워의 높이가 현재 비교하려는 타워 높이보다 높거나 같으면 레이저를 수신할 수 있으므로 answer에 s..

문제 https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제풀이 큰 틀은 DFS이다. stackbracket은 괄호 '('와 해당 위치를 저장하기 위한 용도, setanswer는 중복 제거된 값들을 저장하는 용도, string input은 입력값, vectorremove는 True값이면 괄호를 지운다는 의미, False이면 지우지 않는다는 의미를 나타내는 용도이다. 0번째 인덱스부터 DFS를 시작한다. 스택을 이용..