-
[Algorithm] ๋ฐฑ์ค 10809 ์ํ๋ฒณ ์ฐพ๊ธฐ(Swift/C++)Algorithm 2022. 1. 30. 18:34
10809๋ฒ: ์ํ๋ฒณ ์ฐพ๊ธฐ
๊ฐ๊ฐ์ ์ํ๋ฒณ์ ๋ํด์, a๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น, b๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น, ... z๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ์ด๋ค ์ํ๋ฒณ์ด ๋จ์ด์ ํฌํจ๋์ด ์์ง ์๋ค๋ฉด -1์ ์ถ
www.acmicpc.net

์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ
- ๊ตฌํ
- ๋ฌธ์์ด
๋ฌธ์ ํ์ด
๋จผ์ ๋จ์ด S๋ฅผ ์ ๋ ฅ๋ฐ์ ํ, ๋จ์ด์ ๊ฐ ์ํ๋ฒณ์ Character ๋ฐฐ์ด๋ก ์ ์ฅํด์ค๋ค.

๊ทธ๋ฆฌ๊ณ ๋จ์ด S์ ๊ฐ ์ํ๋ฒณ์ ๋ํด์ ํด๋น ์ํ๋ฒณ๋ค์ด ์ฒ์ ๋ฑ์ฅํ๋ ์์น๋ฅผ ์ ์ฅํ๊ธฐ ์ํด -1๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด arr์ ์์ฑํ๋ค.
์ด ๋, ์ํ๋ฒณ์ ๊ฐฏ์๋ 26๊ฐ์ด๋ฏ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 26์ด๋ค.

์ ๋ ฅ์ baekjoon์ผ๋ก ํ๋ฉด, ๋ฐฐ์ด S์ ์ ์ฅ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.

์ฆ,
S[0] = "b"
S[1] = "a"
S[2] = "e"
S[3] = "k"
S[4] = "j"
S[5] = "o"
S[6] = "o"
S[7] = "n"
์ด๋ ๊ฒ ์ ์ฅ๋ ์ํ์ด๋ค. ์ฌ๊ธฐ์ S์ index๋ ํด๋น ์ํ๋ฒณ๋ค์ด ์ฒ์ ๋ฑ์ฅํ๋ ์์น ๊ทธ ์์ฒด์ด๋ค.
arr ๋ฐฐ์ด์ ์ฒ์์ ๋ชจ๋ -1๋ก ์ด๊ธฐํ๋์ด์๋ค. arr ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ 0๋ถํฐ 25์ธ๋ฐ, ์ธ๋ฑ์ค 0์๋ a๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น๋ฅผ, ์ธ๋ฑ์ค 1์๋ b๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น๋ฅผ, ... ์ธ๋ฑ์ค 25์๋ z๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น๋ฅผ ์ ์ฅํ๋ฉด ๋๋ค.
๋ฐ๋ผ์ arr ๋ฐฐ์ด์ ์ํ๋ฒณ์ ์์น๋ฅผ ์ ์ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.

์ด๋ฅผ ์ฝ๋๋ก ๋ํ๋ด๋ ค๋ฉด, ๋จผ์ S ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์ ์ฅ๋ ์ํ๋ฒณ์ ์์คํค์ฝ๋๋ฅผ ์์์ผํ๋ค.
์ฌ๊ธฐ์ arr ๋ฐฐ์ด์์ a๋ ์ธ๋ฑ์ค 0์, b๋ ์ธ๋ฑ์ค 1์ ์ ์ฅ๋์ด์๋ค.
์ค์ a์ ์์คํค์ฝ๋๋ 97์ด๊ธฐ ๋๋ฌธ์ arr ๋ฐฐ์ด์ ์ธ๋ฑ์ค 0๋ถํฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ index๋ผ๋ ์์์ ์์คํค์ฝ๋์์ 97์ ๋บ ๊ฐ์ ์ ์ฅํ๋ค. ๋ฌผ๋ก ์ด ์์ ์ for๋ฌธ์ ๋๋ฉด์ S์ ๋ชจ๋ ์์์ ํด์ผํ๋ค.

๊ทธ๋ฆฌ๊ณ ๋ง์ฝ arr[index]๊ฐ -1์ด๋ผ๋ฉด, ์ฒ์ ๋ฑ์ฅํ ์์ด๊ธฐ ๋๋ฌธ์ arr[index]์ S์ ์ธ๋ฑ์ค์ธ i๋ฅผ ์ ์ฅํด์ฃผ๋ฉด ๋๋ค.

๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก arr์ ๋ชจ๋ ๊ฐ์ ์ถ๋ ฅ ํ์์ ๋ง์ถฐ์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.

์์ค ์ฝ๋ (Swift)
let S = readLine()!.map { (value: Character) -> Character in return value } var arr = [Int](repeating: -1, count: 26) for i in 0 ... S.count - 1 { let index = Int(S[i].asciiValue! - 97) if arr[index] == -1 { arr[index] = i } } for i in arr { print(i, terminator: " ") }์์ค ์ฝ๋ (C++)
#include <iostream> #include <algorithm> #include <string> #include <cstring> using namespace std; char alphabet[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; char word[101]; int arr[26]; int main(void) { cin.tie(0); cout.tie(0); std::ios::sync_with_stdio(false); for (int i = 0; i < 26; i++) { arr[i] = -1; // ์ด๊ธฐํ } cin >> word; // ๋จ์ด for (int i = 0; i < strlen(word); i++) { for (int j = 0; j < strlen(alphabet); j++) { if (word[i] == alphabet[j]) { if (arr[j] != -1) continue; // ์ด๋ฏธ ๋์๋ ๋ถ๋ถ arr[j] = i; } } } for (int i = 0; i < 26; i++) { cout << arr[i] << " "; } return 0; }'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํ๋ก๊ทธ๋๋จธ์ค ์์ ์ํธ Level 1 (Swift) (0) 2022.01.31 [Algorithm] ๋ฐฑ์ค 1157 ๋จ์ด ๊ณต๋ถ (Swift/C++) (0) 2022.01.31 [Algorithm] ๋ฐฑ์ค 11654 ์์คํค์ฝ๋ (Swift/C++) (0) 2022.01.30 [Algorithm] ์๊ฐ ๋ณต์ก๋ & ๊ณต๊ฐ ๋ณต์ก๋ (0) 2022.01.12 [Algorithm] ์๊ณ ๋ฆฌ์ฆ ํ ์ ๋ฆฌ (C++) (0) 2022.01.05