문제
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include<iostream>
#include<string>
#include<array>
constexpr int ALPHABET_LENGTH = 26;
int main() {
std::array<int, ALPHABET_LENGTH>alphabetList{};
std::string word;
std::cin >> word;
for (const auto& s : word) {
int index = toupper(s) - 'A';
alphabetList[index]++;
}
for (const auto& i : alphabetList)
std::cout << i << " ";
}
|
후기
이 문제를 해결하기 위한 키워드는 받은 문자열을 하나씩 나눠서 alphabetList에 저장하는 것이다.
string 문자열로 단어를 받은 후 문자를 하나씩 돌면서 해당하는 문자를 정수형으로 변환하여 alphabetList에 해당하는 값을 증가한다.
한 가지 주의사항은 대소문자 구별이 없기 때문에 toupper() 함수를 이용해 대문자로 변경하거나 tolower() 함수를 이용해 모든 문자를 소문자로 바꿔서 문제를 풀면 쉽게 풀 수 있다.
출처 및 레퍼런스
문제 링크: https://www.acmicpc.net/problem/10808
'온라인 코딩 > 문자열(String)' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (0) | 2021.03.27 |
---|---|
[백준] 1316번 그룹 단어 체커 (0) | 2020.05.08 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2020.04.24 |
[백준] 2908번 상수 (0) | 2020.02.27 |
[백준] 11720번 숫자의 합 (0) | 2020.02.25 |