Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions BOJ/26-2-W2/BOJ10815/mindidii.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

int nums[20000002]; // 지역변수로 사용하면 stack 영역에 저장하기 때문에 값이 터짐

int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);

int N;
cin >> N;

int a;
for(int i=0; i<N; i++)
{
cin >> a;
nums[a + 10000000] = 1;
}

int M;
cin >> M;
int b;
for(int i=0; i<M; i++)
{
cin >> b;
if(nums[b + 10000000] == 1) cout << 1 <<' ';
else cout << 0 << ' ';
}

return 0;
}
38 changes: 38 additions & 0 deletions BOJ/26-2-W2/BOJ11053/mindidii.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

int main()
{

// 수열 A가 주어졌을 때 가장 긴 증가하는 수열
int N;
cin >> N;
vector<int>nums(N);
vector<int>dp(N, 1);
for(int i=0; i<N; i++)
{
cin >> nums[i];
}

// dp테이블에 현재의 값보다 작은 개수를 count 해서 테이블을 체우기
int result = 0;
for(int i=0; i<N; i++)
{
for(int j=0; j<i; j++)
{
if(nums[j] < nums[i])
{
dp[i] = max(dp[i], dp[j]+1);
}
}
result = max(result, dp[i]);
}

cout << result << '\n';

return 0;
}
41 changes: 41 additions & 0 deletions BOJ/26-2-W2/BOJ11399/mindidii.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

vector<int> line;

int main()
{

int N;
cin >> N;
line.assign(N, 0);

for(int i=0; i<N; i++)
{
cin >> line[i];
}

sort(line.begin(), line.end());

vector<int>prefix(N);
prefix[0] = line[0];
for(int i=1; i<N; i++)
{
prefix[i] = prefix[i-1] + line[i];
}

int sum = 0;
for(int i=0; i<N; i++)
{
sum += prefix[i];
}

cout << sum << '\n';

return 0;
}
38 changes: 38 additions & 0 deletions BOJ/26-2-W2/BOJ18870/mindidii.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>

using namespace std;

int main()
{
int N;
cin >> N;

// 압축을 해야하는 수보다 작은 수의 개수로 압축
vector<int>coordinate(N);
for(int i=0; i<N; i++)
{
cin >> coordinate[i];
}

vector<int>ordered(N);
copy(coordinate.begin(), coordinate.end(), ordered.begin());
sort(ordered.begin(), ordered.end());

ordered.erase(unique(ordered.begin(), ordered.end()),ordered.end());


for(int c:coordinate)
{
auto it = lower_bound(ordered.begin(),ordered.end(), c);
int count = distance(ordered.begin(), it);
cout << count << " ";
}


return 0;
}
70 changes: 70 additions & 0 deletions BOJ/26-2-W2/BOJ5567/mindidii.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

int n, m;
vector<vector<int>>friends;
int visit[501];

void bfs(int start)
{
queue<int>q;
q.push(start);
visit[1] = 0;

while (!q.empty())
{
int curr = q.front();
q.pop();

for(int i=0; i<friends[curr].size(); i++)
{
int nxt = friends[curr][i];
if(visit[nxt] == -1)
{
visit[nxt] = visit[curr] + 1;
q.push(nxt);
}
}
}



}

int main()
{
cin >> n >> m;
friends.assign(n + 1, vector<int>());
fill(visit, visit+501, -1);
int check = false;
for(int i=0; i<m; i++)
{
int a, b;
cin >> a >> b;
friends[a].push_back(b);
friends[b].push_back(a);
if( a == 1 || b == 1) check = true;
}

int cnt = 0;
if(!check)
{
cout << 0 << '\n';

}
else {
bfs(1);
for(int i=0; i<n+2; i++)
{
if(visit[i] == 1 || visit[i] == 2) cnt++;
}
cout << cnt << '\n';
}

return 0;

}