[백준] 10809번 알파벳 찾기 풀이 코드 (C/C++/Java 자바/Python 파이썬)

풀이

문자 연산과 조건문을 이용해 각 알파벳이 처음 나타난 위치를 기록합니다. 파이썬은 문자 연산보다 알파벳 배열을 만든 후 바로 인덱스 비교하는 것이 편합니다.


코드

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

Related posts

블로그 이사

[Codeforces] 50A Domino piling 풀이 코드 (C/C++/Java /Python)

[Codeforces] 1538B Friends and Candies 풀이 코드 (C/C++/Java /Python)