import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String S = br.readLine();

        boolean[] isOarr = new boolean[N+1];
        int xcount = 0;
        for (int i=0; i<N; i++) {
            if(S.charAt(i) == 'o') {
                isOarr[i+1] = true;
            } else {
                isOarr[i+1] = false;
                xcount ++;
            }
        }

        // System.out.println(Arrays.toString(isOarr));

        // x가 나온 순번, 근데 계속 도는건 비효율, 그래서 각 x가 몇번째에 나왔는지 저장하고 이값을...그냥 해쉬문제.
        // 왜 해쉬를 써야한다고 생각했을까?
        // 계속 계산하면 시간초과나
        // 그래서 왜 하필 해쉬 ? -> x가 나온 순번을 일단 O(N)으로 바로 구하고 그 다음 작업할 수 있으니...
        // 근데 해쉬 쓰는법 까먹어서 걍 리스트쓸래
        ArrayList<Integer> first_X_list = new ArrayList<>(); // 여기선 0번부터 시작.
        
        for (int i=1; i<= N; i++) {
            if(!isOarr[i]) {
                first_X_list.add(i); // idx+1번째 x는 i에 등장 
            }
        }

        for (int i=1; i<=xcount; i++) {
            System.out.println(first_X_list.get(i-1));
        }

        for (int i=0; i<N-xcount; i++) {
                System.out.println(N);   
        }        
        // System.out.println(first_X_list);
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: