BOJ 10809

2020-01-25

위 문제는 백준 사이트의 알고리즘 10809 문제에 관한 설명입니다.


문제

알파벳 소문자로만 이루어진 단어 S가 주어진다.

각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를,

포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner sc= new Scanner(System.in);
		String s = sc.next();
		int i,k = 0;
        int array[] = new int[26];
        Arrays.fill(array, -1);
        for (i = 0; i < s.length(); i++) {
            k = (int)(s.charAt(i) - 'a');
            if(array[k]==-1)
            array[k]=i;
        }
        for(i=0;i<array.length;i++)
        	System.out.print(array[i]+" ");
	}
}

제가 푼 소스코드 입니다.

    for(int i = 0; i < a; i++) {
      result += (sum.charAt(i)-'0');
    }

어제 알아낸 위의 소스코드를 활용할 수 있는 문제였습니다.

Arrays.fill 함수를 이용해 array 배열을 -1로 채운 후 활용하니 쉽게 풀 수 있었습니다.

import java.io.*;
import java.util.*;
 
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 input = br.readLine();
 
        int[] alphabetArray = new int[26];
        Arrays.fill(alphabetArray, -1);
        // 배열 1로 초기화
 
        for (int i = 0; i < input.length(); i++) {
            int position = input.charAt(i) - 97;
            if (alphabetArray[position] == -1) {
                // 처음값만 저장
                alphabetArray[position] = i;
            }
        }
 
        for (int i : alphabetArray) {
            bw.write(i + " ");
        }
 
        bw.flush();
 
    }
 
}

Take Knowledge’s Tech & Knowledge님 티스토리

Take Knowledge’s Tech & Knowledge님은 이런 식으로 풀으셨습니다.

알고리즘적인 방식은 비슷했고 어떻게 구성했느냐의 차이인 것 같습니다.

버퍼를 활용해서 푸셨는데 오랜만에 버퍼 활용에 대해서 복습해야겠습니다.

알파벳 찾기