๐ ๋ฌธ์
https://www.acmicpc.net/problem/2890
๐ ๋ฌธ์ ์์ฝ
์๊ทผ์ด๋ ์นด์ฝ ๋ํ๋ฅผ ๊ฐ์ตํ๋ค. ๋ํ๋ ์ ์ธ๊ณ์ ์์ค๊ณ๋๊ณ , ์์ฑ์ด ๊ฒฝ๊ธฐ์ฅ ์ ์ฒด๋ฅผ ์ดฌ์ํ๊ณ ์๋ค. ์๊ทผ์ด๋ ์์ฑ ์ฌ์ง์ ๋ฐํ์ผ๋ก ์ค์๊ฐ ์์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํ๋ค.
์์ฑ ์ฌ์ง์ Rํ C์ด์ด๋ค. ๋ชจ๋ ์ค์ ์ฒซ ๋ฒ์งธ ๊ธ์๋ โSโ์ด๊ณ ์ถ๋ฐ์ ์ ์๋ฏธํ๋ค. ๋, ๋ง์ง๋ง ๊ธ์๋ โFโ์ด๊ณ ์ด๊ฒ์ ๊ฒฐ์น์ ์ ์๋ฏธํ๋ค. ๋ํ์ ์ฐธ๊ฐํ ํ์ ์ด 9ํ์ด๊ณ , ๊ฐ ํ์ 1๋ถํฐ 9๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค. ์นด์ฝ์ ํญ์ ์ด์ ๋ํด ์ฐ์ํ๋ ์ธ ์นธ์ ์ฐจ์งํ๋ฉฐ, ์นด์ฝ ๋ฒํธ๋ก ํ์ํ๋ค. ๋ง์ง๋ง์ผ๋ก ๋ฌผ์ โ.โ๋ก ๋ํ๋ ์๋ค.
ํ์ ์์๋ ๊ฒฐ์น์ ์ผ๋ก๋ถํฐ ๋จ์ด์ง ๊ฑฐ๋ฆฌ๋ก ์ธก์ ํ๋ค. ๊ฐ๊น์ธ์๋ก ์์๊ฐ ๋๋ค. ๋ง์ฝ, ๋ ํ์ด ๊ฒฐ์น์ ๊ณผ ๋จ์ด์ง ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด, ๊ฐ์ ๋ฑ์์ด๋ค.์ ๋ ฅ: ์ฒซ์งธ ์ค์ R๊ณผ C๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ R๊ฐ ์ค์๋ โ.โ, โSโ, โFโ, โ1โ~โ9โ๋ก ์ด๋ฃจ์ด์ง ์์ฑ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค. ํ ์ค์๋ ์ต๋ ํ ๊ฐ์ ์นด์ฝ๋ง ์๊ณ , ์์ฑ ์ฌ์ง์ ์๋ ์นด์ฝ์ ํญ์ 9๊ฐ์ด๋ค. (10 โค R, C โค 50)
์ถ๋ ฅ: ์ถ๋ ฅ์ ์ด 9์ค์ ํด์ผ ํ๋ค. i๋ฒ์งธ ์ค์๋ i๋ฒ ํ์ ๋ฑ์๋ฅผ ์ถ๋ ฅํ๋ค. (i=1~9)
๐ก ์ ๊ทผ ๋ฐฉ๋ฒ
์
๋ ฅ ๋ฐ์ ์ซ์๋ฅผ ์ธ๋ฑ์ค๋ก ๋ง์ง๋ง ์์น๋ฅผ ๋ฐฐ์ด์ ๋ด๊ณ ,
ํด๋น ๋ฐฐ์ด์ ๊ธฐ์ค์ผ๋ก ๊ฒฐ์น์ ์์๋ถํฐ ๋ญํน์ ๋ค๋ฅธ ๋ฐฐ์ด์ ๋ด์ ์ถ๋ ฅํ๋ค.
โ ๏ธ ์ฒ์์ ํ๋ ์ค์
๐ป ์ฝ๋
#include <iostream>
using namespace std;
int R, C;
char map[51][51];
int pos[10];
int r[10];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> R >> C;
for (int i = 0; i < R; ++i) {
for (int j = 0; j < C; ++j) {
cin >> map[i][j];
if (map[i][j] > '0' && map[i][j] <= '9')
pos[map[i][j] - '0'] = j;
}
}
int rank = 1;
for (int i = C - 2; i > 0; --i) {
bool isRanking = false;
for (int j = 1; j <= 9; ++j) {
if (pos[j] != i)
continue;
r[j] = rank;
isRanking = true;
}
if (isRanking)
rank++;
}
for (int i = 1; i <= 9; ++i) {
cout << r[i] << '\n';
}
return 0;
}