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님은 이런 식으로 풀으셨습니다.
알고리즘적인 방식은 비슷했고 어떻게 구성했느냐의 차이인 것 같습니다.
버퍼를 활용해서 푸셨는데 오랜만에 버퍼 활용에 대해서 복습해야겠습니다.