백준 2890번 카약 JAVA

YB·2025년 1월 31일

링크텍스트

설명

정렬을 한 후 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]));
        }
    }
}

profile
안녕하세요

0개의 댓글