ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋จ์ด S๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ํ๋ฒณ์ด ๋จ์ด์ ๋ช ๊ฐ๊ฐ ํฌํจ๋์ด ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
10808๋ฒ: ์ํ๋ฒณ ๊ฐ์
๋จ์ด์ ํฌํจ๋์ด ์๋ a์ ๊ฐ์, b์ ๊ฐ์, …, z์ ๊ฐ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด S๊ฐ ์ฃผ์ด์ง๋ค. ๋จ์ด์ ๊ธธ์ด๋ 100์ ๋์ง ์์ผ๋ฉฐ, ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ
๋จ์ด์ ํฌํจ๋์ด ์๋ a์ ๊ฐ์, b์ ๊ฐ์, …, z์ ๊ฐ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
์ ๋ ฅ๋ ๋ฌธ์์ด์ ์ํํ๋ฉฐ ํด๋นํ๋ ์ํ๋ฒณ ์์์ ํด๋นํ๋ ์ธ๋ฑ์ค์ +1์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
ํด๋น ํ์ด๋ ์ด์ค for๋ฌธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ O(n^2) ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ต๋๋ค.
ํ์ง๋ง, ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ํด๋น ์ํ๋ฒณ ๋ฌธ์์ ์์คํค ์ฝ๋๋ฅผ ์ด์ฉํ๋ค๋ฉด O(n) ์๊ฐ ๋ณต์ก๋๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์์ต๋๋ค.
(์ฌ์ค, ์ ๋ ์ฒ์ ๋ฌธ์ ๋ฅผ ํ์์ ๋ ์ด์ค for๋ฌธ์ผ๋ก ํ์์ด์ ..ใ )
๊ฐ ๋ฌธ์๋ ๊ณ ์ ํ ์์คํค ์ฝ๋๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ฐ์๋ ์ํ๋ฒณ๋ค์ ์ฐ์๋ ์์คํค ์ฝ๋ ๊ฐ์ ๊ฐ์ต๋๋ค.
์ฆ, 'a'๋ ์์คํค ์ฝ๋๋ฅผ 10์ง์๋ก ํ์ํ๋ฉด 97, 'b'๋ 98, 'c'๋ 99 ... ์์ฐจ์ ์ผ๋ก ์ด์ด์ง๋๋ค.
(์ถ๊ฐ๋ก 'A'๋ 65, 'B'๋ 66 ... ์์ฐจ์ ์ผ๋ก ์์คํค ์ฝ๋ ๊ฐ์ ๊ฐ์ต๋๋ค.)
์ด ๋ฌธ์ ์์๋ ์ ๋ ฅ์ด ์๋ฌธ์๋ก ์ ํ๋์ด ์์ผ๋ฏ๋ก ํด๋น ์ฌ์ค์ ํ์ฉํ ์ ์์ต๋๋ค.
ํ์ด ์์
1. ์ถ๋ ฅ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ์ํ๋ฒณ ๊ฐ์๋งํผ์ ์์๋ฅผ ๊ฐ๋ ๋ฐฐ์ด์ ์ด๊ธฐํํฉ๋๋ค.
2. ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์ ๋ฌธ์์ด๋ก ์ํํ๋ฉฐ ๊ฐ ๋ฌธ์์ ์์คํค ์ฝ๋ ๊ฐ์ ํ์ธํฉ๋๋ค.
3. ํด๋น ๊ฐ์ 'a'์ ์์คํค ์ฝ๋ ๊ฐ์ธ 97๋ก ๋นผ์ฃผ๊ณ , ํด๋น ๊ฐ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ํ์ฉํ์ฌ ํด๋น ์ํ๋ฒณ ์๋ฆฌ์ +1์ ํด์ค๋๋ค.
ํ์ด ์ฝ๋
< ํ์ด 1 - ์ด์ค for๋ฌธ ํ์ฉ >
// ์ด์ค for๋ฌธ ์ฌ์ฉ ํ์ด
// O(n^2)
var input = readLine()
if let input = input {
var answer = [Int](repeating: 0, count: 26)
var alphabets = "abcdefghijklmnopqrstuvwxyz"
var index = 0
for str in input {
for alphabet in alphabets {
if str == alphabet {
answer[index] += 1
index = 0
break
} else {
index += 1
}
}
}
print(answer.map { String($0) }.joined(separator:" ") )
}
< ํ์ด 2 - ์์คํค ์ฝ๋ ํ์ฉ >
๋ฌธ์ 'a'์ ์์คํค ์ฝ๋๊ฐ 97์ธ ๊ฒ์ ์๊ณ ์๋ค๋ฉด 97์ ์ง์ ๋์ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ง๋ง,
๋ชจ๋ฅผ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ์ง์ ํ์ธํ์ฌ ์คํํ ์ ์์ต๋๋ค.
(Swift์์ ์์คํค ์ฝ๋๋ฅผ ํ์ธํ๊ธฐ ์ํด unicodeScalars, utf8, asciiValue ๋ฑ์ ํ์ฉํ ์ ์์ง๋ง,
๊ฐ ๋ฐฉ์๋ง๋ค ๋ฆฌํด๋๋ ํ์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํฉ๋๋ค. ์ด๋ ๋์ค์ Swift์ ๋ฌธ์์ด์ ๊ณต๋ถํ๋ฉด์ ๋ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.)
// ์ํ๋ฒณ ์์คํค ์ฝ๋๋ฅผ ๊ณ ๋ คํ๋ฉด for๋ฌธ ํ ๋ฒ์ผ๋ก๋ ๊ฐ๋ฅ.
// O(n)
let input = readLine()!
var array = [Int](repeating: 0, count: 26)
var a:Character = "a"
for alphabet in input {
let index = Int(alphabet.asciiValue! - a.asciiValue!)
array[index] += 1
}
print(array.map{ String($0) }.joined(separator: " "))
'Coding Test > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 10845๋ฒ - ํ (Swift, C++) (0) | 2024.02.23 |
---|---|
[BOJ] 10773๋ฒ - ์ ๋ก (Swift, C++) (0) | 2024.02.22 |
[BOJ] 5397๋ฒ - ํค๋ก๊ฑฐ (Swift, C++) (0) | 2024.02.21 |
[BOJ] 10828๋ฒ - ์คํ (Swift, C++) (1) | 2024.02.20 |
[BOJ] 1475๋ฒ - ๋ฐฉ ๋ฒํธ (Swift) (0) | 2024.02.13 |
- 2023๋ ํ๊ณ
- remainder
- Anyobject
- Swift
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๊ณต๊ฐ ๋ณต์ก๋
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์์ด ๋ด์ค
- ์คํ
- ๊ท๋๋ผ๋ฏธ ์์ด
- containerView
- ์์ด ๊ณต๋ถ
- ๊ฐ๋ฐ์
- 2024๋ ๋ชฉํ
- C++
- Container View Controller
- ์ ํ์์นด๋ฐ๋ฏธ
- ์๋ฃ ๊ตฌ์กฐ
- ์ํํธ์คํฌ
- root view controller
- ํ
- tipkit
- ๊ท๋๋ผ๋ฏธ ์์ด
- 24๋ ํ๊ณ
- ๋ฒ์ฉ๊ณ ์ ์๋ณ
- 10808
- pageViewController
- ๊ดํธ์ ๊ฐ
- ํ๊ณ
- BOJ
- Total
- Today
- Yesterday