Skip to content

Commit

Permalink
Merge branch 'main'
Browse files Browse the repository at this point in the history
  • Loading branch information
mwy3055 committed Aug 18, 2023
2 parents 9a1fc6e + 68196bb commit 7ec9bb3
Show file tree
Hide file tree
Showing 47 changed files with 3,096 additions and 18 deletions.
6 changes: 6 additions & 0 deletions 2020-ALPS-18th/library/is_power_of_two.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<<<<<<< HEAD
int is_power_of_two(int num)
{
return num && !((num-1) & num);
=======
int is_power_of_two(int num)
{
return num && !((num-1) & num);
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<<<<<<< HEAD
// 트리 문제 틀
#include <bits/stdc++.h>

Expand Down Expand Up @@ -59,3 +60,66 @@ int main()

return 0;
}
=======
// 트리 문제 틀
#include <bits/stdc++.h>

using namespace std;

const int MAX = 10000;
int n;
bool check[MAX + 1];
vector<pair<int, int>> node[MAX + 1];

int max_len; //지름 길이
int max_len_point; //지름에 해당하는 끝점

void dfs(int point, int length)
{
if (!check[point])
{
check[point] = true;
//max_len 과 max_len_point 갱신
if (max_len < length)
{
max_len = length;
max_len_point = point;
}

for (int i = 0; i < node[point].size(); i++)
{
dfs(node[point][i].first, length + node[point][i].second);
}
}
}

int main()
{

ios::sync_with_stdio(false);
cin.tie(NULL);

cin >> n;

int parent, child, length;
for (int i = 0; i < n - 1; i++)
{
cin >> parent >> child >> length;
node[parent].push_back(make_pair(child, length));
node[child].push_back(make_pair(parent, length));
}

//가장 멀리 있는 정점(max_len_point) 구하기
dfs(1, 0);

max_len = 0;

memset(check, 0, sizeof(check));

//max_len_point와 가장 멀리 있는 정점과의 거리 구하기
dfs(max_len_point, 0);
cout << max_len << endl;

return 0;
}
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<<<<<<< HEAD
//배열 인덱스를 헷갈리지 않게 1부터 할려고했는데 이미 주어진 점에서 0 0을 포함하고 있는 사례
//인덱스를 0부터 시작으로 고정해줌 인덱스 실수 주의
#include <bits/stdc++.h>
Expand Down Expand Up @@ -74,3 +75,81 @@ int main()

return 0;
}
=======
//배열 인덱스를 헷갈리지 않게 1부터 할려고했는데 이미 주어진 점에서 0 0을 포함하고 있는 사례
//인덱스를 0부터 시작으로 고정해줌 인덱스 실수 주의
#include <bits/stdc++.h>

using namespace std;

const int MAX = 100;
int N, M, K, cnt;
bool check[MAX + 1][MAX + 1];
int board[MAX + 1][MAX + 1];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {-1, 0, 1, 0};

vector<int> v;

void dfs(int y, int x)
{
check[y][x] = true;

cnt++;

for (int k = 0; k < 4; k++)
{
int nx = x + dx[k];
int ny = y + dy[k];
if (0 <= nx && nx < N && 0 <= ny && ny < M && board[ny][nx] == 0 && !check[ny][nx])
{
dfs(ny, nx);
}
}
}

int main()
{

ios_base::sync_with_stdio(false);
cin.tie(NULL);

cin >> M >> N >> K;

for (int i = 0; i < K; i++)
{
int fx, fy, lx, ly;
cin >> fx >> fy >> lx >> ly;
for (int j = fy; j < ly; j++)
{
for (int k = fx; k < lx; k++)
{
board[j][k] = 1;
}
}
}


for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
if (board[i][j] == 0 && !check[i][j])
{
cnt = 0;
dfs(i, j);
v.push_back(cnt);
}
}
}

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

cout << v.size() << '\n';

for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";

return 0;
}
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<<<<<<< HEAD
#include <iostream>
#include <cmath>

Expand Down Expand Up @@ -67,4 +68,75 @@ int main(void)
}

return 0;
=======
#include <iostream>
#include <cmath>

using namespace std;
int num;
int cnt;

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

int tc = 255;

while (tc--)
{
cnt = 0;
cin >> num;
if (num == 0)
break;

//c++에서 제곱수 만드는 법
int len = (int)sqrt(num);

for (int i = 1; i <= len; i++)
{
if (i * i == num)
{
cnt++;
break;
}
for (int j = i; j <= len; j++)
{
if (i * i + j * j == num)
{
cnt++;
break;
}
else if (i * i + j * j > num)
break;

for (int k = j; k <= len; k++)
{
if (i * i + j * j + k * k == num)
{
cnt++;
break;
}
else if (i * i + j * j + k * k > num)
break;

for (int l = k; l <= len; l++)
{
if (i * i + j * j + k * k + l * l == num)
{
cnt++;
break;
}
else if (i * i + j * j + k * k + l * l > num)
break;
}
}
}
}

cout << cnt << '\n';
}

return 0;
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
}
68 changes: 68 additions & 0 deletions 2020-ALPS-18th/problem/20201114/5549. 행성 탐사/5548-ljh.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<<<<<<< HEAD
#include <bits/stdc++.h>
using namespace std;

Expand Down Expand Up @@ -63,3 +64,70 @@ int main(void)

return 0;
}
=======
#include <bits/stdc++.h>
using namespace std;

const int MAX = 1000; //ㅇㅇ typedef보다 이거를 지향하라 하더라

int Jboard[MAX + 1][MAX + 1];
int Iboard[MAX + 1][MAX + 1];
int Oboard[MAX + 1][MAX + 1];
int J_acc_board[MAX + 1][MAX + 1];
int I_acc_board[MAX + 1][MAX + 1];
int O_acc_board[MAX + 1][MAX + 1];

int N, M, K;
string temp;
int Jcount, Icount, Ocount;

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

cin >> M >> N;
cin >> K;

for (int i = 0; i < M; i++)
{
cin >> temp;
for (int j = 0; j < N; j++)
{
if (temp[j] == 'J')
Jboard[i][j] = 1;

if (temp[j] == 'I')
Iboard[i][j] = 1;

if (temp[j] == 'O')
Oboard[i][j] = 1;
}
}

for (int i = 0; i < M; i++){
for (int j = 0; j < N; j++)
{
//중복으로 뺀 acc_board[i][j]다시 더해줘야함
J_acc_board[i + 1][j + 1] = J_acc_board[i + 1][j] + J_acc_board[i][j + 1] - J_acc_board[i][j] + Jboard[i][j];
I_acc_board[i + 1][j + 1] = I_acc_board[i + 1][j] + I_acc_board[i][j + 1] - I_acc_board[i][j] + Iboard[i][j];
O_acc_board[i + 1][j + 1] = O_acc_board[i + 1][j] + O_acc_board[i][j + 1] - O_acc_board[i][j] + Oboard[i][j];
}
}


// acc_board[i + 1][j + 1] = acc_board[i + 1][j] + acc_board[i][j + 1] - acc_board[i][j] + num;

for (int i = 0; i < K; i++)
{
int fy, fx, ly, lx;
cin >> fy >> fx >> ly >> lx;
cout << J_acc_board[ly][lx] - J_acc_board[fy - 1][lx] - J_acc_board[ly][fx - 1] + J_acc_board[fy - 1][fx - 1] << " ";
cout << O_acc_board[ly][lx] - O_acc_board[fy - 1][lx] - O_acc_board[ly][fx - 1] + O_acc_board[fy - 1][fx - 1] << " ";
cout << I_acc_board[ly][lx] - I_acc_board[fy - 1][lx] - I_acc_board[ly][fx - 1] + I_acc_board[fy - 1][fx - 1] << '\n';

}

return 0;
}
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<<<<<<< HEAD
#include <bits/stdc++.h>

using namespace std;
Expand Down Expand Up @@ -58,3 +59,65 @@ int main()
else
cout << num1 - num2 << ' ' << -1 << '\n';
}
=======
#include <bits/stdc++.h>

using namespace std;

long long Extended_Euclid(long long r1, long long r2)
{
long long r, q, s, s1 = 1, s2 = 0, t, t1 = 0, t2 = 1, tmp = r1;

while (r2)
{
q = r1 / r2;
r = r1 % r2;
s = s1 - q * s2;
t = t1 - q * t2;

// printf("%4d %4d %4d %4d %4d %4d %4d %4d %4d %4d\n", q, r1, r2, r, s1, s2, s, t1, t2, t);

r1 = r2;
r2 = r;
s1 = s2;
s2 = s;
t1 = t2;
t2 = t;
}
// printf("%4d %4d %4d %4d %4d %4d \n\n", q, r1, r2, s1, s2, t1);


// printf("s : %lld , t : %lld \n", s1, t1);

if (r1 == 1) //¿ª¿øÀÌ ÀÖÀ½
{
if (t1 < 0)
t1 += tmp;
return t1;
}

return 0;
}

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

long long num1, num2, invers = 0;

cin >> num1 >> num2;

// printf(" q r1 r2 r s1 s2 s t1 t2 t\n");

if (num1 > num2)
invers = Extended_Euclid(num1, num2);
else
invers = Extended_Euclid(num2, num1);

if (invers)
cout << num1 - num2 << ' ' << invers << '\n';
else
cout << num1 - num2 << ' ' << -1 << '\n';
}
>>>>>>> 68196bb61d126f1040cb1bf7ba5b2922d3fba073
Loading

0 comments on commit 7ec9bb3

Please sign in to comment.