-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8-dhlee777 #35
8-dhlee777 #35
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
λ¬Έμ λ₯Ό 보μ λ§μ 2λ² νμνλ©΄ λκ² λ€! λΌλ λ°©λ²μ΄ μ°μ λ μ¬λμ΅λλ€. λ¬Έμ κ° μλν λλ‘ μ ν΄κ²°νμ κ² κ°λ€μ! DFS ν¨μ 맀κ°λ³μλ‘ λ νμμ λ€λ₯΄κ² μ²λ¦¬ν λΆλΆμ΄ μΈμ κΉμμ΅λλ€!
κ·Έλ°λ° νΉμ ν λ² νμνλ©΄μ ν μ μλ λ°©λ²μ μμκΉμ? μμ΄λμ΄κ° μλ건 μλλ° λκ° ν λ²λ§ νμνλ©΄μ λ κ²½μ°μ λν΄ λ€ μ²λ¦¬ κ°λ₯ν λ°©λ²μ΄ μμκΉ..? μΆμ΄μ νλ² λμ§μ λμ Έλ΄
λλ€..γ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μ κ°μ κ²½μ°λ 2μ€ forλ¬ΈμΌλ‘ i, jλ²μ§Έ μμλ€μ λ°©λ¬Έν΄κ°λ©° BFS
λ°©μμΌλ‘ νμνμμ΅λλ€.
void Solve()
{
cin >> N;
visited1.assign(N, vector<bool>(N, false));
visited2.assign(N, vector<bool>(N, false));
answer1 = 0, answer2 = 0;
string line;
for (int i = 0; i < N; i++)
{
cin >> line;
section.push_back(line);
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (visited1[i][j]) continue;
answer1++;
q1.push({ i, j });
visited1[i][j] = true;
char curColor;
int y, x;
while (!q1.empty())
{
y = q1.front().first;
x = q1.front().second;
q1.pop();
curColor = section[y][x];
for (int k = 0; k < 4; k++)
{
int ny = y + dy[k];
int nx = x + dx[k];
if (OutOfBounds(ny, nx)) continue;
if (visited1[ny][nx]) continue;
if (curColor != section[ny][nx]) continue;
q1.push({ ny, nx });
visited1[ny][nx] = true;
}
}
if (visited2[i][j]) continue;
answer2++;
q2.push({ i, j });
visited2[i][j] = true;
while (!q2.empty())
{
y = q2.front().first;
x = q2.front().second;
q2.pop();
curColor = section[y][x];
for (int k = 0; k < 4; k++)
{
int ny = y + dy[k];
int nx = x + dx[k];
if (OutOfBounds(ny, nx)) continue;
if (visited2[ny][nx]) continue;
if (curColor == 'B' && curColor != section[ny][nx]) continue;
if (curColor != 'B' && section[ny][nx] == 'B') continue;
q2.push({ ny, nx });
visited2[ny][nx] = true;
}
}
}
}
cout << answer1 << " " << answer2;
}
###첫 λ²μ§Έ λ°©μ
νλμ νμμ λ κ°λ₯Ό νλ²μ μ²λ¦¬ν μ μμκΉ?
μμ½μΈκ³Ό μ μμΈμ λ¨Όμ νλμ μμ 무쑰건 νλ³νλ λ°©μμ λκ°κΈ°μ λ°©λ¬Ένλ μ§μ μ μ μμΈκ³Ό μμ½μΈ 곡ν΅λλ λΆλΆμ΄ μμ κ²μ΄λ€.
λ¨ μμ½μΈμ κ²½μ° λΉ¨κ°κ³Ό μ΄λ‘μ νλμ μμΌλ‘ 보기 λλ¬Έμ μ μμΈλ³΄λ€ λ¨Όμ visited λ°°μ΄μ λ¨Όμ λΉ λ₯΄κ² μ±μΈ κ²μ΄λ€.
(μ μμΈμ λΉ¨κ°, μ΄λ‘μμ ꡬλΆνλ λ°λ©΄ μμ½μΈμ λΉ¨κ°, μ΄λ‘μμ νλμ μμΌλ‘ ꡬλ³νκΈ° λλ¬Έμ μμ΄ μ΄μ΄μ Έμλ€λ©΄ νμνλ λ²μλ μμ½μΈμ΄ λ λ§μμ§ κ²μ΄κΈ° λλ¬Έμ.)
boolλ‘ λΆκΈ°μ μ μ μ‘μμ€λ€λ©΄ κ°λ₯ν κ² κ°μμΌλ κ°λ
μ±μ΄ λ¨μ΄μ§λ€λ μ μμ μ νΈλμ§ μμμ΅λλ€.
###λ λ²μ§Έ λ°©μ
λλ²μ§Έ λ°©μμ λ°λ‘ μμ μ½λλ‘ μ§μ μ λ λ λ°λ‘ λ°λ‘ λ°©λ¬Ένλ κ²μ΄μμ΅λλ€.
μ΄λ κ² λλ©΄ λ°°μ΄μ μ μμΈ, μμ½μΈ ꡬλ³ν΄μ€μΌνκΈ° λλ¬Έμ λ©λͺ¨λ¦¬κ° λ λ°° λ μ°¨μ§νκΈ΄ νμ§λ§ μ΅λ ν¬κΈ° 100*100μ κ°μνλ€λ©΄ λΆμ‘±ν λΆλΆμ μκΈ°μ κΈλ°© ν μ μμλ κ² κ°μ΅λλ€.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dfsλ λκ°μ΄ νλ μ λ‘μμ½μ κ²½μ° λ κ°μ§ μμ λμΌνκ² ν΄μ νμνκ±°κ΅°μ,, μ μμΈκ³Ό μ λ‘μμ½μ λ°°μ΄μ λ°λ‘ λμ΄ μ§ννλκΉ μ½λλ 보기 μ¬μ λ κ² κ°μμ. μ λ΄€μ΅λλ€ γ γ
π λ¬Έμ λ§ν¬
μ λ‘μμ½
βοΈ μμλ μκ°
2μκ°
β¨ μλ μ½λ
μ²μμ λ¬Έμ λ₯Ό λ΄€μλ
dfs
λbfs
λ₯Ό ν΅ν΄ κ·Έλ¦Όμμ λ¨μνꡬμμ κ°μ
λ₯Ό ꡬνλ λ¬Έμ μΈμ€ μμμΌλμ μμΈμΌλμ νμ
κ³Όμ λ‘μμ½μΌλμ νμ
μ΄ λκ°μ§κ²½μ° κ° μ‘΄μ¬νλ€.μ λ‘μμ½μ νΉμ§μ r(λΉ¨κ°)κ³Ό g(μ΄λ‘)μ ꡬλΆνμ§ λͺ»νλ κ²μ΄λ€.
λ°λΌμκ·Έλ¦Όμ μμμλ₯Ό μ λ ₯λ°μλ
μ λ‘μμ½μ νμ
μ μν΄ r(λΉ¨κ°)μ g(μ΄λ‘)μΌλ‘ λ°κΏμcolor2λ°°μ΄
μ μ μ₯ν΄μ€λ€.λ³μμ μΈ
dfs
맀κ°λ³μλ‘λ
νμ¬μμΉμ xμ’ν,yμ’ν , colorλ°°μ΄, visited λ°°μ΄
μ μ€μ ν΄μ€λ€.1. μ μμΈμ νμμ μν΄μλ
dfs(i,j,color,visited )
λ₯Ό ν΅ν΄ νΈμΆ2. μ λ‘μμ½μ νμμ μν΄μλ
dfs(i,j,color2,visited2)
λ₯Ό ν΅ν΄ νΈμΆ1.μ μμμ
x,yμ’ν
κ° 0λ³΄λ€ ν¬κ±°λκ°κ³ κ·Έλ¦Όμ νλ³μκΈΈμ΄siz
λ³΄λ€ μμμΌνλ€.2.νμ¬μμΉμ μμμμ νμνλ €λ μμμκ° κ°μμΌνλ€.
3.κ·Έ μμμλ₯Ό λ°©λ¬Ένμ§ μμμ΄μΌνλ€.
μ 체μ½λ
π μλ‘κ² μκ²λ λ΄μ©
λ°°μ΄
μ μΈμ λ무 λ§μ΄ν΄μ€μλ©λͺ¨λ¦¬ μ΄κ³Ό
κ° λ°κΉ κ±±μ νλλ° λ¨μ§μμλ€. μλ§μ΅λκ° 100*100
λ°μ μλΌμ κ·Έλ°κ±° κ°λ€.λ©λͺ¨λ¦¬λ₯Ό μ κ²μ¬μ©νλ
λ€λ₯Έλ°©λ²μ΄ μλμ§ λ€μμ νλ² μκ°ν΄λ΄μΌκ² λ€.