Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 11060
- 재밌게 할래요
- 삼성 SW 역량 테스트 기출 문제
- D2
- 리퍼럴
- 이니셔티브 q
- 디자인패턴
- 자료구조
- level2
- d4
- Design Pattern
- 백준
- 프로그래머스
- Meta Quest3
- 레퍼럴
- 메타퀘스트3
- 어싱크
- BOJ
- spring
- SOLID
- Initiative Q
- 알고리즘
- Java
- C++
- SWEA
- 논블록
- 블록
- D3
- 10505
- 점프 점프
Archives
- Today
- Total
아직은 정체성이 없는 블로그
[SWEA][D3][c++] 9480. 민정이와 광직이의 알파벳 공부 본문
문제
9480. 민정이와 광직이의 알파벳 공부
문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXAdrmW61ssDFAXq
풀이 과정
모든 단어의 조합에서 알파벳 a~z 까지를 다 가지고 있는지를 확인하는 방식으로 문제를 풀었습니다.
1.입력받은 단어를 vector에 넣는다.
2.DFS를 사용하여 alphabet배열에 입력받은 단어의 알파벳을 가지고 있는 위치의 수를 1더한다.
3.alphabet 배열을 체크하여 현재 a~z 까지를 다 가지고 있는지를 확인한다.
4.index에 1을 더하고 다시 DFS를 한다
5.2에서 더했던 알파벳들을 다시 다 빼준다.
6.모든 DFS가 끝난 후 결과를 출력한다.
코드
#include<iostream>
#include<cstring>
#include<string>
#include<vector>
using namespace std;
int alphabet[26];
vector<string> words;
int n;
int result;
//알파벳 넣기
void alphabetAdd(string s){
for(int i=0; i<s.size();i++){
alphabet[s[i]-'a']++;
}
}
//알파벳 빼기
void alphabetSub(string s){
for(int i=0; i<s.size();i++){
alphabet[s[i]-'a']--;
}
}
//알파벳 다있는지 확인
bool alphabetCheck(){
for(int i=0; i<26;i++){
if(alphabet[i]<1)
return false;
}
return true;
}
//모든 경우의 수
void dfs(int index){
if(index==words.size())
return;
for(int i=index; i<words.size(); i++){
alphabetAdd(words[i]);
if(alphabetCheck())
result++;
dfs(i+1);
alphabetSub(words[i]);
}
}
int main(int argc, char** argv)
{
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
result=0;
memset(alphabet,0,sizeof(alphabet));
words.clear();
cin>>n;
for(int i=0; i<n; i++){
string s;
cin>>s;
words.push_back(s);
}
dfs(0);
cout<<"#"<<test_case<<" "<<result<<"\n";
}
return 0;
}
'알고리즘 역량테스트 문제 > SWEA' 카테고리의 다른 글
[SWEA][D3][c++] 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2020.08.10 |
---|---|
[SWEA][D3][c++] 10505. 소득 불균형 (0) | 2020.08.08 |
[SWEA][D3][c++] 6718. 희성이의 원근법 (0) | 2020.07.21 |
[SWEA][D2][c++] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2020.07.20 |
[SWEA][D2][c++] 1945. 간단한 소인수분해 (0) | 2020.07.20 |
Comments