Posts 백준 17176 암호해독기 c++
Post
Cancel

백준 17176 암호해독기 c++

문제

https://www.acmicpc.net/problem/17176

문제해설

0은 띄어쓰기 1~26은 A~Z, 27~52는 a~z까지 일대일대응되는 암호가 있다.
순서가 섞인 숫자들과 문장이 주어진다. 이 숫자들이 문장과 일치하는지 판단하는 문제이다.

문제풀이

숫자가 몇번 나왔는지 체크해주는 배열과
문장의 알파벳이 몇번 나왔는지 체크해주는 배열을 만들어 두 배열이 일치하는지 확인해주면 된다.
띄어쓰기를 포함한 한줄 전체를 받는 것은 getline(cin, 받을변수이름)을 사용했다.
그리고 string이나 char를 입력받을 때는 엔터가 들어가지 않도록 조심해야한다.

전체코드

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
32
33
34
35
36
#include<iostream>
#include<string>
using namespace std;
int arr[53];
int ans[53];
string a;

int main() {
	sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int x;
		cin >> x;
		arr[x]++;
	}
	getchar();
	getline(cin, a);
	for (int i = 0; i < n; i++) {
		if (a[i] >= 'A' && a[i] <= 'Z')
			ans[a[i] - 'A' + 1]++;
		else if (a[i] >= 'a' && a[i] <= 'z')
			ans[a[i] - 'a' + 27]++;
		else if (a[i] == ' ')
			ans[0]++;
	}
	bool flag = true;
	for (int i = 0; i < 53; i++) {
		if (arr[i] != ans[i])
			flag = false;
	}
	if (flag == false)
		cout << 'n';
	else
		cout << 'y';
}

백준 1181 단어 정렬 c++

백준 17363 우유가 넘어지면? c++

Comments powered by Disqus.