본문 바로가기

분류 전체보기

(106)
C++ STL:: priority queue 제대로 쓸줄 알면 c++의 sort같은것 없이도 활용도 높은 작업들을 많이 할 수 있을 것 같다. 예를 들면 알고리즘 문제풀때라던지 우선순위 큐는 사용방법이 priority_queue로 정의된다. 예를 들어보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include #include using namespace std; int main(){ // priority_queue priority_queue pq; // or priority_queue pq; // push(element) pq.push(5); pq.push(2);..
백준 9012 괄호 (문자열)- C++ https://www.acmicpc.net/problem/9012 딱히 특별한것 없는 문자열 알고리즘이다. 괄호 개수를 세면서 (일땐 1을 더하고, )일땐 1을 빼면서, 마지막에 총 개수가 0이면 yes 아닐시 no를 출력하면 된다. 맨처음엔 큐로 구현을 하려고 했으나 굳이 그럴 필요 없이 숫자같은 변수를 활용해서 풀면 간단하게 풀 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include #include using namespace std; int main(void){ queue q; int casenum; cin>>casenum; for(int i=0; i>s; ..
부스트 코스 서포터즈 BOOSTER 합격! 열심히 하겠습니다. 부스트코스 서포터즈 BOOSTER 최종 합격을 축하드립니다! 안녕하세요, 커넥트재단 부스트코스팀입니다. ​ 2020년 상반기 부스트코스 홍보대사 BOOSTER에 선발되신 것을 축하드립니다. 활동을 원하시는 분들은 활동 의사를 밝혀 회신을 부탁드립니다. ​ 많은 분들이 지원하여 주셔서 선발에 고민이 많았습니다. 치열한 경쟁을 거쳐 선발되신만큼 활발한 활동을 부탁드립니다. 약 9주 간의 BOOSTER 활동이 여러분의 성장에 도움이 되기를 바랍니다. ​ 한가지 공지사항을 말씀드리자면 많은 관심과 성원으로 2차 모집이 진행되고 있어 설 연휴 이후인 1월 28일(화)부터 BOOSTER 활동이 시작될 예정입니다. ​ 먼저, 지원하신 각 분야의 부스트코스 강좌를 수강 신청하시고, 학습을 시작하여 ..
백준 1931 회의실 배정-greedy algorithm(C++) https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘의 전형적인 예시이다. 학교 알고리즘 시간에 거의 똑같은 문제를 다뤄봐서 쉽게 풀줄 알았는데, 막상 어려웠던 부분은 구현단계였다. 우선 문제를 풀기 위해서는 끝나는 시간에 주목해야한다. 1.끝나는 시간이 가장 빠른 녀석을 골라서, 2.그 끝나는 시간보다 시작시간이 빠른 녀석들을 골라 3.그 녀석들을 전부 지우고, 1~3의 과정을 반복하는 식이다. 시작시간과 끝시간을 배열로 넣어서 그걸 다시 벡터로 저장한 다음에, 벡터를 끝 시간을 기준으로 오름차순으로 정렬해야한다. (pair를 가진 벡터는, 정렬하고..
백준 10610 30 (greedy) - C++ https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는 www.acmicpc.net 출력초과가 난 이유는 sum을 int로 설정해서였다. 입력되는 숫자 자리수가 일단 굉장히 크기 때문에 sum이 모두 숫자의 합을 표현할 ..
백준 11725 트리의 부모찾기-C++ 모든 트리문제를 트리구조로 만들어서 풀 필요는 없다. 코드의 2~4줄의 주석처럼 코딩을 했더라면 아마 100줄이상은 분량이 나왔을거다. 문제의 핵심은 각 연결된 두 정점이 있을 때, 둘 중 무엇이 start node고 무엇이 end node인지 모른다는 것이다. 모를 때는 pair로 접근하는 것은 어려운것 같고, 양방향으로 탐색을 해야하기 때문에 벡터에다가 node1 - node2 , node2 - node1 두 가지 모두를 집어넣으면 된다는 점이다. 이렇게 벡터로 트리를 구현한 다음, dfs로 방문 여부를 판단하면서 부모 노드를 기록하면서 진행하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31..
백준 1991 트리순회 - 이진트리와 재귀함수 (C++) 작년에 배운 자료구조도 오랜만에 복습할겸, 사실 지금 백준은 c++를 공부중이며 짜는 중이라 클래스 개념도 잡을겸 AC받은 코드를 보면서 카피해서 코딩했다. 전위 순회, 중위 순회 및 후위 순회의 출력 방식은 위에 자세히 설명되어 있고, 왼쪽 오른쪽을 탐색할때, 재귀함수가 필요한 부분은 그때마다 호출해서 출력해주면 된다. 나는 자료구조를 자바로 공부해서.. C++ 코드는 얼마나 다를까 봤는데 사실 문법빼곤 다 똑같아서 습득하는데는 얼마 걸리진 않았다. 나름 처음보고 신기했던(?) 문법은 1. public method를 public: 밑의 인덴트로 설정하는것 2. 클래스 메소드를 부를때는 클래스::메소드(파라미터) 형식 정도.. 복습하면서 풀기 괜찮았던 문제. 1 2 3 4 5 6 7 8 9 10 11 1..
백준 2884 알람시계 (입출력)- C++ cin cout과 45분을 시,분에 더하고 빼주는 부분만 신경쓰면 크게 어려운 문제는 아니다. 0시인 경우는 따로 고려를 해주어야 한다. 1 2 3 4 5 6 7 8 9 #include using namespace std; int h,m; int main(void){ cin>>h>>m; if(m>=45) cout