-
[SWEA] #1240 _ 단순 2진 암호코드Problem Solving/SWEA 2019. 7. 3. 20:07
[단순 2진 암호코드] https://www.swexpertacademy.com/
단순히 입력 값에서 암호 코드를 읽어 계산하여 유효한 코드인지 판별하는 문제이다.
암호 코드를 올바르게 추출하는게 문제의 핵심인 것 같다.
[0] 0001101, [1] 0011001, [2] 0010011, [3] 0111101, [4] 0100011,
[5] 0110001, [6] 0101111, [7] 0111011, [8] 0110111, [9] 0001011나는 입력 받은 문자열의 제일 끝의 1을 기준으로 56개를 암호 코드로 추출하였다.
#include <string>
str1.find(str2)
문자열 str1에서 str2의 시작 위치 반환
str1.rfind(str2)
문자열 str1에서 str2의 마지막 위치 반환
str1.compare(str2)
문자열 str1과 str2 비교, 두 문자열이 같으면 0 반환[ 소스 코드 ]
#include <iostream> #include <string> using namespace std; int main() { int t_case, n, m, even, odd, val; string code, tmp, cipher[10] = { "0001101","0011001","0010011","0111101","0100011", "0110001","0101111","0111011","0110111","0001011" }; cin >> t_case; for (int i = 1; i <= t_case; i++) { val = 0; odd = 0; even = 0; cin >> n >> m; for (int j = 0; j < n; j++) { cin >> tmp; if (tmp.find('1') != -1) code = tmp; } code.assign(code, code.rfind('1') - 55, 56); for (int j = 1; j <= 8; j++) { tmp.assign(code, (j - 1) * 7, 7); for (int k = 0; k < 10; k++) { if (tmp.compare(cipher[k]) == 0) { if (j % 2 != 0) odd += k; else even += k; val += k; break; } } } if (((odd * 3) + even) % 10 == 0) cout << "#" << i << " " << val << "\n"; else cout << "#" << i << " 0\n"; } return 0; }
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] #2805 _ 농작물 수확하기 (0) 2019.08.04 [SWEA] #1215 _ 회문1 (0) 2019.08.04 [SWEA] #5658 _ 보물상자 비밀번호 (0) 2019.07.17 [SWEA] #1249 _ 보급로 (0) 2019.07.17 [SWEA] #1208 _ Flatten (0) 2019.07.10 댓글