PS 76

[BOJ] 16967 배열 복원하기

https://www.acmicpc.net/problem/16967 16967번: 배열 복원하기 크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐 www.acmicpc.net 21.05.14 기준 문제 난이도 실버3 난이도는 실버3인게 맞는데 학회 슬랙에 올라온 질문 덕분에 고민을 많이 했다.. 애초에 그 질문 덕분에 문제를 풀게 된 것이긴 하지만 우선 내 풀이는 배열 b를 이용해 배열 a의 내용을 최대한 구하고, 값이 구해지지 않은 부분은 또 구해주는 방법인데 int main() { ios::sync_with_stdio(0); ..

Programming 2021.05.14

[Algorithms] Min Heap, Max Heap

학교 과제 하면서 짰다 C++ 클래스, 상속 사용하면서 짜니까 재밌다 처음에 min heap의 pop 메소드를 짤 때 왼쪽 자식부터 확인하면서 자식에 부모보다 큰 값이 저장되어 있으면 값을 바꾸고 바로 다음 level로 넘어갔는데 그렇게 하니까 틀렸다. 만약 3 -> {2, 1}이 저장되어 있을 때 왼쪽 자식이랑만 값을 비교하면 2 -> {3, 1} 상태가 된다. (a -> {b, c}는 부모노드, 왼쪽 자식, 오른족 자식에 저장된 값이 각각 a, b, c라는 의미이다) 이는 부모 노드의 값은 자식 노드의 값보다 작거나 같아야 한다는 원칙을 위반한다. 위와 같은 상황에서 두 자식 노드에 대해 모두 비교하면 되지 않을까? 라는 생각을 했지만 만약 그렇게 한다면 3 -> {2, 1} 상태에서 2 -> {3,..

Programming 2021.05.13

[CF] Round #720 (Div. 2) _ 210508

codeforces.com/contest/1521 Dashboard - Codeforces Round #720 (Div. 2) - Codeforces codeforces.com 오... 학회 내 코드포스 스터디에서 매주 금요일 23:35에 버추얼 라운드를 도는데, 본 라운드가 있는 날에는 그 라운드를 다같이 친다. 백만년만의 코포라 당연히 떨어질 줄 알았는데 올랐다... 블루를 가기 바로 직전인 이 레이팅에서 가장 고통스럽다는 걸 잘 알고 있지만. minigimbob 계정이 블루를 달성하고 나서는 쭉 minigb 계정으로 참여했는데, 부계정이기도 하고 크게 동기부여 될만 한 게 없어서 별로 진지하진 않았다. 근데 요즘 코드포스를 다시 열심히 하고 싶어져서 꾸준히 잘 해볼 생각이다. ㅎㅎ 지금 내 실력은 ..

Programming 2021.05.08

[BOJ] 14659 한조서열정리하고옴ㅋㅋ

(2021년 3월 4일에 작성한 글입니다.) 14659번: 한조서열정리하고옴ㅋㅋ 첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이 www.acmicpc.net 처음에는 O(n^2) 풀이밖에 안 떠올랐는데 어떻게 하는거지? 하다가 신촌 연합 캠프 초급 스터디 멘토 할 때 효규가 강의자료 만든 거 보고 그리디구나! 했다 ​ 근데 처음에 제출할 때 틀렸는데, 그 이유는 맨 마지막 결과에 대한 업데이트를 해줘야 하기 때문이다 ​ 예를 들어 5 5 4 3 2 1 이런 인풋이 들어오면 처음에 제출한 코드에서는 답이 0이 될 것이다 ​ 이를 해결하는..

Programming 2021.04.26

[BOJ] 20927 Degree Bounded Minimum Spanning Tree

(2021년 2월 24일에 작성한 글입니다) 20927번: Degree Bounded Minimum Spanning Tree 제약에 맞는 Spanning Tree가 존재한다면 첫 번째 줄에 YES를 출력하여라. 이후 해당 Spanning Tree 의 간선을 $N-1$개의 줄에 걸쳐 출력한다. 간선을 출력하는 순서는 상관없으며, 각 간선을 출력할 때는 www.acmicpc.net N, M 크기가 작아서 Brute Force인가? 생각했지만 일단 원래 MST 방법대로 구함 WA ​ 그래서 Brute Force로 짰다 근데 시간초과 났어 그래서 일단 미뤄두고 있다가 효규가 맞왜틀이라고 해서 코드 봤는데 비트마스킹으로 했더라 우왕 ​ 효규가 모든 노드가 하나 이상의 간선과 연결되어 있고 전체 간선 개수가 N-1..

Programming 2021.04.26

[CF] Round #699 (Div. 2) _ 210205

(2021년 2월 6일에 작성한 글입니다.) Dashboard - Codeforces Round #699 (Div. 2) - Codeforces codeforces.com 진짜... 화가 너무 많이 났다 그래서 끝나고 나서도 한참동안 화가 많이 났다... 지금 끝난지 40분정도 지났는데 많이 가라 앉음... ​ 집에 마카롱이 있어서 다행이다 이거 쓰고 먹어야지 홍차도 마셔야지 늦게 자야지 ​ ​ A. R, L, U, D의 개수를 센 다음에 X > 0 이면 X > s; int cnt[4]{}; for (int i = 0; s[i]; i++) { if (s[i] == 'R') { cnt[0]++; } else if (s[i] == 'L') { cnt[1]++; } else if (s[i] == 'U') { ..

Programming 2021.04.26

[CF] Round #697 (Div. 3) _ 210125

(2021년 1월 28일에 작성한 글입니다.) Dashboard - Codeforces Round #697 (Div. 3) - Codeforces codeforces.com ㅎㅎㅎ 벌써 며칠 됐네... ​ 이 날... 파이썬 멘토 첫 날이 끝나고 너무 피곤했고 내가 뭔데 감히 어떤 말을 하는 바람에 너무 미안해서 몇 시간동안 끙끙 앓고 심장이 뛰다가 막 열도 나고(코로나일까봐 무서웠다..) 몸이 안 좋아서 코포 전에 자고 일어났다 그랬더니 갑자기 15분 연기래 이 날 동훈이랑 같이 하기로 했었어서 아 연기야!!!! 하면서 같이 화내고 동훈이는 N-Queen을 풀었고(나 아직도 그거 안 풂..) 나는 뭘 했는지 모르겠지만 시간이 지났고 또 열심히 해보자! 했는데 10분 더 연기되서 12시에 시작함... ​..

Programming 2021.04.26

[CF] Round #556 (Div. 2) _ 210124

(2021년 1월 25일에 작성한 글입니다.) Standings - Codeforces Round #556 (Div. 2) - Codeforces codeforces.com 학회 코포 스터디에서 버추얼로 풀었다. ​ A. A가 A 같지가 않았다 문제 이해하는데 꽤 시간 걸렸지만 그래도 구현은 쉬웠다. 구매 가격 중 가장 낮은거, 판매 가격 중 가장 높은 걸 비교해서 만약 더 비싸게 팔 수 없으면 아무 처리도 하지 않고, 더 비싸게 팔 수 있다면 최대한 구매한 뒤 되팔면 된다.​ int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll N, M, K; cin >> N >> M >> K; vector buy(N), sell(M); for (int ..

Programming 2021.04.26

[BOJ] 11085 군사 이동

(2021년 1월 24일에 작성한 글입니다.) 11085번: 군사 이동 전쟁 당시 Baekjoon World의 국왕은 Cube World를 공격할 작전을 세운 적이 있습니다. Baekjoon World와 Cube World는 p개의 지점과 w개의 길로 표현됩니다. 모든 길은 양방향이며, 각 길마다 너비가 존재하여 www.acmicpc.net (20.08.09) c부터 v까지 DFS를 계속 돌면서 체크하도록 했더니 시간초과. 경로가 존재하는지만 확인을 하면 되기 때문에 Union-Find(DST)를 사용하면 훨씬 간단하다!!! 우왕 짱 신기 그리고!! structure를 이용해서 푼 첫 문제인거 같다 아마 짱신기!!!!! 이제 앞으로 벡터 쓸때 pair를 여러개 하지 않아도 된다...ㅋㅋㅋㅋㅋ 앞으로 st..

Programming 2021.04.26

[BOJ] 19580 마스크가 필요해

(2021년 1월 21일에 작성한 글입니다.) 19580번: 마스크가 필요해 첫 번째 줄에는 A도시의 시민 수인 N과 A도시의 상점 수인 M이 주어진다. (1 ≤ N, M ≤ 500,000) 두 번째 줄부터 N + 1번째 줄까지는 A도시의 각 시민이 마스크에 소비할 수 있는 돈의 범위인 Li, Ri가 www.acmicpc.net 20 Summer SUAPC Div 2에서 이 문제 처음 봤는데 범위가 최대 10^18인걸 보고 대회때는 그냥 패쓰했다 그때 당시에는 수 범위가 큰 거는 그냥 패스하자는 마인드가 있었어서 패쓰했는데 ​ 두 달쯤 전에 이거 다시 풀었었는데 잘 모르겠어서 결국 풀이를 봤고, 풀이대로 했는데도 계속 틀려서 미뤄뒀던 문제 ​ 근데 다시 보니까 두 달 전에 틀렸던 이유는 내가 multim..

Programming 2021.04.26