Skip to content

Commit 6163f1a

Browse files
committed
Merge branch 'main' of https://github.com/VSFe/Algorithm_Study into main
2 parents 58c5e6f + 5bf4a12 commit 6163f1a

File tree

8 files changed

+253
-16
lines changed

8 files changed

+253
-16
lines changed
Binary file not shown.

NTW/수식 최대화.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
long long solution(string expression) {
5+
long long answer = 0;
6+
vector<long long> num;
7+
vector<char> exp, location;
8+
string n = "";
9+
10+
for(int i = 0; i < expression.size(); i++)
11+
{
12+
if(expression[i] == '+' || expression[i] == '-' || expression[i] == '*')
13+
{
14+
num.push_back(stoi(n));
15+
n = "";
16+
if(find(exp.begin(), exp.end(), expression[i]) == exp.end())
17+
exp.push_back(expression[i]);
18+
location.push_back(expression[i]);
19+
}
20+
else
21+
n += expression[i];
22+
}
23+
24+
num.push_back(stoi(n));
25+
sort(exp.begin(), exp.end());
26+
27+
do
28+
{
29+
vector<long long> tmp_num = num;
30+
vector<char> tmp_loc = location;
31+
32+
for(int i = 0; i < exp.size(); i++) {
33+
for(int j = 0; j < tmp_loc.size(); j++) {
34+
if(exp[i] == tmp_loc[j]) {
35+
if(tmp_loc[j] == '+')
36+
tmp_num[j] = tmp_num[j] + tmp_num[j + 1];
37+
else if(tmp_loc[j] == '-')
38+
tmp_num[j] = tmp_num[j] - tmp_num[j + 1];
39+
else if(tmp_loc[j] == '*')
40+
tmp_num[j] = tmp_num[j] * tmp_num[j + 1];
41+
42+
tmp_num.erase(tmp_num.begin() + j + 1);
43+
tmp_loc.erase(tmp_loc.begin() + j);
44+
j--;
45+
}
46+
}
47+
}
48+
49+
if(answer < abs(tmp_num[0]))
50+
answer = abs(tmp_num[0]);
51+
} while(next_permutation(exp.begin(), exp.end()));
52+
53+
return answer;
54+
}

README.md

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,10 @@ Algorithm_Study
22
================
33

44
~21년 2월까지 진행되는 수업 자료를 관리하는 Git 페이지 입니다.
5-
자유로운 과제 업로드 및 코드 리뷰를 진행할 예정입니다.
5+
수업과 별개로, 자료는 주기적으로 업로드 예정입니다.
66

7-
수업 관련
7+
추후 작업 예정
88
----------------
9-
- 수업 자료는 개념 수업/기출 해설로 나뉘며, 수업의 진도에 상관없이 모든 자료가 제공될 예정입니다.
10-
(3월 이후에도 깃은 유지되며, 진도를 다 나가지 못하더라도 Slack이나 Git을 활용하여 질의 응답이 진행될 예정입니다.)
11-
12-
- Python과 C++의 기본적인 수업 내용은 동일합니다. 다만 자료구조 및 언어별 특수한 활용에 대해 언급하는 부분이 달라질 수 있습니다. 즉, 언어의 문법과 상관없이 문제 푸는 테크닉이 필요하다면 언어에 상관없이 수업 자료를 보셔도 됩니다.
13-
14-
- 추천 문제는 과제가 아닙니다. 풀어보도록 권유하는 문제입니다. 해당 문제를 푸시고 Git에 업로드 하시면, 수강생들 간/제가 코드리뷰를 진행할 예정입니다. (같은 문제를 풀었기 때문에 다양한 풀이가 나올 수 있다고 생각합니다.)
15-
16-
Git 관련
17-
----------------
18-
- 저장소를 Fork하고, 개인 디렉토리를 만들어서 연습문제 풀이를 PR하는 방식으로 진행할 예정입니다.
19-
20-
- 또한, 수업 관련 질문은 이슈란에 작성해주면 토론의 장이 될 수 있을 것이라고 생각합니다.
21-
22-
- 자세한 사항은 제공받은 자료를 확인하시면 됩니다.
9+
- KAKAO 2021 blind recruitment 1차 코딩테스트 기출
10+
- Concept -> 동적계획법, 트리, 분할정복 등등...
11+
- 처음 진입하는 사람들을 위한 문제 푸는 방법, 기초 문제 선별

Source/ch01/15649.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
int N, M;
7+
vector<int> vec;
8+
9+
void f() {
10+
if(vec.size() == M) {
11+
for(int i : vec) cout << i << " ";
12+
cout << "\n";
13+
return;
14+
}
15+
for(int i = 0; i < N; i++) {
16+
bool isOK = true;
17+
for(int j : vec) {
18+
if(j == i) {
19+
isOK = false;
20+
break;
21+
}
22+
}
23+
if(isOK) {
24+
vec.push_back(i);
25+
f();
26+
vec.pop_back();
27+
}
28+
}
29+
}
30+
31+
int main() {
32+
ios_base::sync_with_stdio(false);
33+
cin.tie(NULL); cout.tie(NULL);
34+
35+
cin >> N >> M;
36+
f();
37+
return 0;
38+
}

Source/ch03/10814.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
int N;
8+
9+
struct Person {
10+
int age;
11+
string name;
12+
};
13+
14+
bool compare(const Person &x, const Person &y) {
15+
return x.age < y.age;
16+
}
17+
18+
int main() {
19+
ios_base::sync_with_stdio(false);
20+
cin.tie(NULL); cout.tie(NULL);
21+
22+
cin >> N;
23+
vector<Person> vec;
24+
int age; string name;
25+
for(int i = 0; i < N; i++) {
26+
cin >> age >> name;
27+
vec.push_back({age, name});
28+
}
29+
30+
stable_sort(vec.begin(), vec.end(), compare);
31+
32+
for(auto i : vec) {
33+
cout << i.age << " " << i.name << "\n";
34+
}
35+
return 0;
36+
}

Source/ch03/2751.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
int N;
8+
vector<int> vec;
9+
10+
int main() {
11+
ios_base::sync_with_stdio(false);
12+
cin.tie(NULL); cout.tie(NULL);
13+
14+
cin >> N;
15+
int tmp;
16+
for(int i = 0; i < N; i++) {
17+
cin >> tmp;
18+
vec.push_back(tmp);
19+
}
20+
21+
sort(vec.begin(), vec.end());
22+
23+
for(int i : vec) {
24+
cout << i << "\n";
25+
}
26+
return 0;
27+
}

Source/ch04/1764.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
int N, M;
8+
9+
vector<string> vec;
10+
11+
bool binaraySearch(string target) {
12+
int left = 0, right = vec.size() - 1;
13+
while(left < right) {
14+
int mid = (left + right) / 2;
15+
if(vec[mid] < target) left = mid + 1;
16+
else right = mid;
17+
}
18+
return (vec[(left + right) / 2] == target);
19+
}
20+
21+
int main() {
22+
ios_base::sync_with_stdio(false);
23+
cin.tie(NULL); cout.tie(NULL);
24+
25+
cin >> N >> M;
26+
27+
string tmp;
28+
for(int i = 0; i < N; i++) {
29+
cin >> tmp;
30+
vec.push_back(tmp);
31+
}
32+
33+
sort(vec.begin(), vec.end());
34+
35+
vector<string> vec1;
36+
for(int i = 0; i < M; i++) {
37+
cin >> tmp;
38+
if(binaraySearch(tmp)) {
39+
vec1.push_back(tmp);
40+
}
41+
}
42+
43+
sort(vec1.begin(), vec1.end());
44+
cout << vec1.size() << "\n";
45+
for(string i : vec1) {
46+
cout << i << "\n";
47+
}
48+
49+
return 0;
50+
}

Source/ch04/1920.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
int N, M;
8+
9+
vector<int> vec;
10+
11+
bool binaraySearch(int num) {
12+
int left = 0, right = vec.size() - 1;
13+
while(left < right) {
14+
int mid = (left + right) / 2;
15+
if(vec[mid] < num) left = mid + 1;
16+
else right = mid;
17+
}
18+
return (vec[(left + right) / 2] == num);
19+
}
20+
21+
int main() {
22+
ios_base::sync_with_stdio(false);
23+
cin.tie(NULL); cout.tie(NULL);
24+
25+
cin >> N;
26+
27+
int tmp;
28+
for(int i = 0; i < N; i++) {
29+
cin >> tmp;
30+
vec.push_back(tmp);
31+
}
32+
33+
sort(vec.begin(), vec.end());
34+
35+
cin >> M;
36+
37+
for(int i = 0; i < M; i++) {
38+
cin >> tmp;
39+
cout << binaraySearch(tmp) << "\n";
40+
}
41+
42+
return 0;
43+
}

0 commit comments

Comments
 (0)