60
풀이
문자 연산과 조건문을 이용해 각 알파벳이 처음 나타난 위치를 기록합니다. 파이썬은 문자 연산보다 알파벳 배열을 만든 후 바로 인덱스 비교하는 것이 편합니다.
코드
C
#include <stdio.h>
#include <string.h>
int main() {
int i, arr[26];
char word[100];
for(i = 0; i < 26; i++){
arr[i] = -1;
}
scanf("%s", word);
for(i = 0; i < strlen(word); i++){
if(arr[word[i]-'a'] == -1){
arr[word[i]-'a'] = i;
}
}
for(i = 0; i < 26; i++){
printf("%d ", arr[i]);
}
return 0;
}
C++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int i, arr[26];
string word;
for(i = 0; i < 26; i++){
arr[i] = -1;
}
cin>>word;
for(i = 0; i < word.size(); i++){
if(arr[word[i]-'a'] == -1){
arr[word[i]-'a'] = i;
}
}
for(i = 0; i < 26; i++){
cout<<arr[i]<<' ';
}
return 0;
}
Java
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[26];
for(int i = 0; i < 26; i++){
arr[i] = -1;
}
String word = sc.next();
for(int i = 0; i < word.length(); i++){
if(arr[word.charAt(i)-'a'] == -1){
arr[word.charAt(i)-'a'] = i;
}
}
for(int i = 0; i < 26; i++){
System.out.printf("%d ", arr[i]);
}
}
}
Python
arr = [-1 for _ in range(26)]
abc = 'abcdefghijklmnopqrstuvwxyz'
word = input()
for c in abc:
if c in word:
print(word.index(c), end = " ")
else:
print('-1', end = " ")
문제 출처
https://www.acmicpc.net/problem/10809