백준 10809 자바

정호윤·2023년 3월 2일

자바

목록 보기
5/46

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.*;
import java.io.*;




public class Main {
    public static void main(String[] args) throws IOException  {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       
       String str = br.readLine();
       for(int i=0;i<str.length();i++){
        for(int j=97;j<=122;j++){
            if(j==str.charAt(i)){
                bw.write(String.valueOf(i)+" ");
            }
        }
        // if문이 작동하지 않았을 때만 bw.wirte(String.valueOf(-1)+" ")가 작동하게 코드를 적어줘야 하는데 실패했다.
        
       }
       bw.flush();
       bw.close();
       br.close();
    }
}

실패했고 다른 풀이방법을 생각해봤다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       // 그니까 핵심은 알파벳 전체 표를 출력하는거임
       String str = br.readLine();
       int[] position = new int[26]; // 알파벳 소문자 개수

       for(int i=0;i<position.length;i++){ // 전부 -1로 초기화
        position[i] = -1;
       }

       for(int i=0;i<str.length();i++){
        int a = str.charAt(i)-'a';
        if(position[a]==-1){ // 중복 체크
            position[a] = i;
        }
       }

       for(int i=0;i<position.length;i++){ // position 배열 전부 출력
        bw.write(position[i]+" ");
       }
        bw.flush();
        bw.close();
        br.close();
    }
}

알파벳 소문자 개수만큼의 배열을 선언하는게 핵심이었다.

profile
개발자로 취직을 희망합니다.

0개의 댓글