컴공 77

[BOJ] 2805 나무 자르기

www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 학회 스터디 강의할 때 다룬 문제 이 문제를 잘 설명하고 싶어서... ppt.. 정말 열심히 만들었다. 이분탐색을 접목해 가능한 높이 중 일부만 확인하는 게 포인트. int arr[1000000]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; int left, right, maxH = 0..

Programming 2021.04.02

[BOJ] 1920 수 찾기

www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 학회 스터디 강의할 때 다룬 문제 이분 탐색을 구현해서 푸는 코드와 STL 사용하는 코드 모두 보여드렸다. int arr[100000]; bool search(int left, int right, int key); int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n; f..

Programming 2021.04.02

[Algorithm] Merge Sort (합병 정렬)

학회 스터디 강의할 때 다룬 문제 작년에 학교 수업에서 수를 정렬하는 게 과제로 나왔는데 O(nlogn) 정렬을 C언어로 구현해야 해서 오랜만에 Merge Sort를 짰었다. 그리고 또 오랜만에. 강의할 때 이거 잘 보여드리고 싶어서 ppt 되게 열심히 만들었는데 여기 그걸 다 첨부하기엔 양이 많고 또 워낙 유명한거니까 코드만 적어야겠다 int arr[1000000], sorted[1000000]; //전역변수. 벡터를 사용하면 더 간단하게 표현 가능 void Sort(int left, int right);//정렬 함수 void Merge(int left, int right);//Merge Sort 과정에서 분할한 두 배열을 합치는 함수 int main() { ios::sync_with_stdio(0);..

Programming 2021.04.02

[BOJ] 1780 종이의 개수

www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 학회 스터디 강의할 때 다룬 문제 우선 N*N 크기의 행렬로 표현되는 종이인지 확인한다. 만약 그렇다면 개수를 업데이트 해주고, 그렇지 않다면 종이를 아홉 등분하여 각각에 대해 또 다시 확인하면 된다. 풀이 자체가 문제를 세 줄로 요약한 거랑 다를 바가 없는데, 결국 이걸 어떻게 구현할 것인지가 관건인 것 같다. #include using namespace std; int arr[7000][7000]..

Programming 2021.04.02

[BOJ] 10988 팰린드롬인지 확인하기

www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 나는 팰린드롬을 매우 좋아한다 팰린드롬 그 자체도 좋고 관련 문제도 좋고 팰린드롬을 확인하는 코드는 다양한 방법으로 구현할 수 있지만 이번 주 초급 스터디에서 Divide & Conquer를 강의했는데 이 문제를 Divide & Conquer의 관점에서 바라볼 수 있을거 같아서 준비했다. 설명은 그림 위주라 생략하고 코드만 넣어야겠다 bool Palin(int left, int right, string& s); int main() { ios::sync_with_st..

Programming 2021.04.02

[Sogang ICPC Team] 21 Spring 초급 2주차 강의

3/31에 학회 초급 스터디에서 Divide & Conquer, Sorting, Binary Search를 강의했다. https://www.youtube.com/watch?v=V4RsRHcqUzw&feature=youtu.be (YouTube 설명란에서 강의 자료 확인하실 수 있습니다.) 지난 겨울에 기초 스터디에서 C++ 관련 내용을 간단하게 설명했던 것 외에는 강의 경험이 없는데 그때는 대부분 사용법을 알려주고 코드를 작성하는 걸 보여주면서 진행해서 발표 자료가 따로 없었고, 되게 가벼운 분위기었다. 근데 이번에는 본격적으로 알고리즘을 강의하니까 좀 부담됐고 그만큼 정말 잘 하고 싶었는데 강의 전에 준비가 완벽히 되어있었던 건 아니라서 강의를 하면서도, 하고 나서도 정말 아쉬웠다. 근데 학회에서 스터..

Experiences 2021.04.02

[CF] Round 560 (Div.3) _ 210313

Dashboard - Codeforces Round #560 (Div. 3) - Codeforces codeforces.com 학회 코포 스터디에서 버추얼을 돌았다 너무 오랜만의 코포/PS라서 어색했다 결과도 별로 좋지 않다 A. 편하게 생각할 수 있도록 string을 뒤집었다. 문자열 변수를 s라고 할 때 ans += s[0] ~ s[x-1] 중 1의 개수 s[x]가 0이면 ans++ ans += s[x+1] ~ s[y-1] 중 1의 개수 한 뒤 ans를 출력하면 된다 int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, y, x; cin >> n >> y >> x; string s; cin >> s; reverse(s.begin(..

Programming 2021.03.13