algo 14

[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