Problem-Solving/BOJ
[BOJ/백준][Bronze1] 2596 : 비밀편지 (C++)
has2
2022. 7. 21. 23:02
https://www.acmicpc.net/problem/2596
2596번: 비밀편지
병현이는 지은이에게 문자 A, B, C, D, E, F, G, H 로 쓰여진 편지를 날마다 보내는데, 컴퓨터로 보내는 비밀편지로, 한 문자마다 0 또는 1인 숫자 여섯 개를 사용하여 보낸다. 둘 사이의 약속은 다음과
www.acmicpc.net
[난이도] Bronze1
[유형] 구현
[풀이]
문자열 8개에 대한 약속을 미리 저장해놓고,
입력 문자열을 6개씩 잘라서 어떤 문자열에 매칭되는지 일일히 확인해보면 됩니다.
#include <iostream>
#include <string>
using namespace std;
int N;
string s,sen[] = {"000000","001111","010011","011100","100110","101001","110101","111010"};
int cmp(string v,int i){
int ret=0;
for(int j=0;j<6;j++){
if(sen[i][j]!=v[j]) ret++;
}
return ret;
}
int main(){
cin >> N >> s;
string ans;
for(int i=0;i<N;i++){
string t = s.substr(i*6,6);
bool ok=0;
for(int j=0;j<8;j++){
if(cmp(t,j)<=1) {
ok=1;
ans+=('A'+j);
break;
}
}
if(!ok) {
cout << i+1;
return 0;
}
}
cout << ans;
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Bronze1/2596.cpp