반응형
문자열 및 숫자가 입력 값에 대해 몇 개가 존재하는지 검사해야하는 경우 추천하는 자료구조와 선택의 이유는 다음과 같다.
1. 배열
배열은 int 형으로 변환이 가능한 경우 추천한다. 다만 문자열이더라도 아스키 코드로 변환이 가능한 경우에는 배열을 사용하는 것이 유리할 수 있다.
2. Map
map 자료구조는 <key, value> 쌍을 이루는 자료구조이다. 이는 String 혹은 입력의 크기가 1000만을 넘어가거나, 각 입력이 10만, 100만 과 같이 순차적으로 분리되어 들어오는 경우 추천한다.
이에 대한 연습 문제로 백준 10808번 문제를 풀어본다.
문제 해석.
문제 : 각 알파벳이 단어에 몇 개 포함되어 있는지 구하는 프로그램
입력은 알파벳 소문자 단어 ( 100을 넘지 않음)
출력은 알파벳 단어에 포함되어 있는 알파벳 횟수를 출력하되 공백으로 구분.
자료구조 : 해당 입력은 소문자로 아스키 코드로 변환이 가능하다. 이를 배열의 위치를 맞추도록 조정하여 해결할 수 있으니 배열을 사용한다.
#include <bits/stdc++.h>
using namespace std;
int cnt[26];
string input;
int main() {
cin >> input;
for(char alphabet : input) cnt[alphabet - 'a']++;
for(int num : cnt) cout << num << ' ';
return 0;
}
반응형
'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글
Palindrome (0) | 2023.07.02 |
---|---|
트럭 주차 (0) | 2023.07.01 |
2309 (0) | 2023.06.26 |
prefix sum (0) | 2023.06.25 |
c++ split (0) | 2023.06.23 |
댓글