본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 11279번 : 최대 힙 답 www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이� www.acmicpc.net heap을 이용한 자료구조는 priority_queue(우선순위큐)입니다. 이는 최상단에 queue헤더를 추가함으로써 stl로 사용할 수 있습니다. 이를 사용해보는 간단한 예제 문제였습니다. Code 1. STL priority_queue 사용 #include #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); usin..
(C++) - 백준(BOJ) 2630번 : 색종이 만들기 답 www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 재귀를 이용해 푸는 문제였습니다. 풀이방법 면적이 다른 색인 색종이가 나오면 2로 계속 나누고 면적이 같다면 파란색인지 흰색인지 판별하여 답을 구하는 문제였습니다. Code #include using namespace std; int paper[130][130]; int n; int whiteNum; int blueNum; bool isSameColor(int i, int j, int..
(C++) - 백준(BOJ) 1931번 : 회의실배정 답 www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 정렬 후 회의가 끝나는 시간이 가장 낮은 회의 순으로 배정하시면 됩니다. 풀이방법 1. 회의가 끝나는 시간을 기준으로 오름차순 정렬 2. 회의가 끝나는 시간이 같을경우엔 회의 시작시간을 기준으로 오름차순 정렬 3. 끝시간이 다음 회의 시작 시간보다 작을 때는 회의를 배정 4. 배정했던 회의개수 답 출력 Code #include #include #include using namespace std; int n; int ans; vector v(100000); bool cmp(const pair &a, const pair &b){ i..
(C++) - 백준(BOJ) 1927번 : 최소 힙 답 www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이� www.acmicpc.net 힙(heap)자료구조를 사용하는 우선순위 큐(priority queue)를 사용하는 문제였습니다. 풀이방법 default가 less(내림차순 정렬, top은 현재 heap 중 가장 큰 값 즉 max heap) 이므로 greater옵션을 주어 min heap으로 바꾸어준 뒤 조건에 맞게 출력해주면 됩니다. Code #include #include #define fastio ios_base::syn..
(C++) - 백준(BOJ) 1620번 : 나는야 포켓몬 마스터 이다솜 답 www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net map자료구조와 vector자료구조를 사용해보는 간단한 문제였습니다. 풀이방법 map자료구조에서 c++의 경우에는 value로부터 key를 추출하는 내장함수가 딱히 없어 vector자료구조를 이용했습니다. 1. 도감의 번호에 해당하는 포켓몬이름을 해당 자료구조에 저장했습니다. 2. 도감의 번호에 해당하는 포켓몬이름이 주어질 경우 map의 value를 출력하도록 했고 반대로 도감의 포..
(C++) - 백준(BOJ) 1074번 : Z 답 www.acmicpc.net/problem/1074 1074번: Z 한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 �� www.acmicpc.net 재귀를 이용해 풀었습니다(백트레킹 방식.) 풀이방법 : 일반적인 정적 배열 할당으로는 풀 수가 없습니다. 최대 배열 크기 2^15 x 2^15 개 = 20억 이상. 따라서 고려할 수 있는 것은 재귀 또는 특정 공식을 찾아 푸는 것입니다. Code : #include #include using namespace std; int n,r,c,ans=0; int dx[4] = {0,0,1,1}; int ..
(C++) - 백준(BOJ) 18111번 : 마인크래프트 답 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 높이를 천천히 낮춰가며 최소시간과 가장 높은 높이를 구하는 구현, brute force 문제였습니다. 풀이방법 : 1. 높이 확인 : 최소 높이는 0 최대 높이는 256까지 loop 2. 채워야할 블록개수 지워야할 블록개수 계산 : if(맵의 한 타일에서 높이 - 정한높이가 양수) => 지워야할 블록 개수 else => 채워야할 블록 개수 3. 높이와 걸린 시간 갱신 if(지울 블록의 개수 + ..
(C++) - 백준(BOJ) 4949번 : 균형잡힌 세상 답 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단 www.acmicpc.net stack을 사용하여 문자열을 다뤄보는 구현문제였습니다. Code: #include #include #include using namespace std; string getBracketStr(string sentance){ string tmp=""; for(int i = 0; i