
정렬을 한 후 Map 사용해 순위를 구해주었다.
시간복잡도:O(R*C), 공간복잡도:O(R*C)
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int[] distance = new int[10];
Arrays.fill(distance, -1);
for(int i=0;i<r;i++){
String s = br.readLine();
for (int j = 0; j < c; j++){
char ch = s.charAt(j);
if(ch >= '1' && ch <= '9'){
distance[ch - '0'] = c - 1 - j;
}
}
}
int[] sorted = distance.clone();
Arrays.sort(sorted);
Map<Integer, Integer> rankMap = new HashMap<>();
int rank = 1;
for(int d:sorted){
if(d != -1 && !rankMap.containsKey(d)){
rankMap.put(d, rank);
rank++;
}
}
for(int i=1;i<=9;i++){
System.out.println(rankMap.get(distance[i]));
}
}
}
