๐Ÿงฉ Algorithm/[BOJ] Bronze

BOJ 10809๋ฒˆ : ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ (C/Python/Bronze 5)

devCloud 2022. 8. 17. 20:16
728x90
 

10809๋ฒˆ: ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ

๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์— ๋Œ€ํ•ด์„œ, a๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜, b๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜, ... z๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์–ด๋–ค ์•ŒํŒŒ๋ฒณ์ด ๋‹จ์–ด์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด -1์„ ์ถœ

www.acmicpc.net

๋ฌธ์ œ

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์— ๋Œ€ํ•ด์„œ, ๋‹จ์–ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ, ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹จ์–ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 100์„ ๋„˜์ง€ ์•Š์œผ๋ฉฐ, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์ถœ๋ ฅ

๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์— ๋Œ€ํ•ด์„œ, a๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜, b๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜, ... z๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

๋งŒ์•ฝ, ์–ด๋–ค ์•ŒํŒŒ๋ฒณ์ด ๋‹จ์–ด์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž๋Š” 0๋ฒˆ์งธ ์œ„์น˜์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๊ธ€์ž๋Š” 1๋ฒˆ์งธ ์œ„์น˜์ด๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ

baekjoon

์˜ˆ์ œ ์ถœ๋ ฅ

1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Solution

c++

#include<stdio.h>
#include<string.h>

int main(void)
{
    int a;
    char s[101]; //๋‹จ์–ด์˜ ๊ธธ์ด 100์„ ๋„˜์ง€ ์•Š๋Š” ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
    scanf("%s", s); //๋ฌธ์ž์—ด ์ž…๋ ฅ๋ฐ›๊ธฐ

    char alpha[26]; //์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด

    for (int i = 0; i < 26; i++) //๋จผ์ € ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด ์ „์ฒด๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™”
    {
        alpha[i] = -1;
    }
    for (int i = 0; i < strlen(s); i++) //๋ฌธ์ž์—ด ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต
    {
        a = (int)s[i] - 97; //ASCII ์ฝ”๋“œ์—์„œ ์†Œ๋ฌธ์ž๋Š” 97~122๋ฒˆ๊นŒ์ง€.
        if (alpha[a] == -1)
            alpha[a] = i;
    }
    for (int i = 0; i < 26; i++) //๋งˆ์ง€๋ง‰์œผ๋กœ ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถœ๋ ฅ
        printf("%d ", alpha[i]); //๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฒฐ๊ณผ ์ถœ๋ ฅ

    return 0;
}

Python 

s = input()
alpha = [-1]*26
for i in range(len(s)):
    if alpha[ord(s[i])-97] == -1:
        alpha[ord(s[i])-97] = i
print(alpha, end=' ')

Another Solution

Python 

s = input()
alphabet = list(range(97,123))
for x in alphabet :
    print(s.find(chr(x)), end=' ')
728x90