2023. 12. 26. 19:11, 코딩 테스트/백준(BOJ)
https://www.acmicpc.net/problem/10808
구현 코드
#include<iostream>
using namespace std;
int main()
{
string alpha = "abcdefghijklmnopqrstuvwxyz";
string str;
int ans[26] = {0,};
cin>>str;
for(int i=0;i<alpha.length();i++)
{
for(int j=0;j<str.length();j++)
{
if(alpha[i]-str[j] == 0)
ans[i]++;
}
}
for(int i=0;i<26;i++)
{
cout<<ans[i]<<" ";
}
return 0;
}
리뷰
1. 알파벳을 저장하는 변수를 따로 둘 필요 없이 아스키 코드를 이용하여 인덱스를 넣어주면 더 간단하게 구현할 수 있다.
for(char a : str){
cnt[a - 'a']++;
}
2. 배열 초기화
배열 초기화를 할 때, 초기값 설정을 따로 안해주면 ++ 연산에서 오류가 생길거라 생각해서 전부 0으로 초기화하려고 이렇게 작성했다.
int a[26] = {0,}
/*
첫번째 요소로 적은 수만 적용되고 다음 요소는 전부 0으로 초기화됨
int a[26] = {1,} 이면 {1,0,0,0...}이라는 의미
*/
하지만 그냥 다음과 같이 선언만 해도 0으로 전부 초기화가 되어있더라. vector도 마찬가지다.
int cnt[26];
vector<int> vec(26);
'코딩 테스트 > 백준(BOJ)' 카테고리의 다른 글
[BOJ] 1620번 : 나는야 포켓몬 마스터 이다솜 (0) | 2023.12.26 |
---|---|
[BOJ] 10988번 : 팰린드롬인지 확인하기 (0) | 2023.12.26 |
[BOJ] 11024번 : 더하기 4 (0) | 2023.02.23 |
[BFS | 기본 문제] 5427번 : 불 (0) | 2023.02.15 |
[BFS | 기본 문제] 7562번 : 나이트의 이동 (0) | 2023.02.14 |
Comments