티스토리 뷰
Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하는 두 단어.
두 단어를 입력받고 아나그램인지 판별한다.
#include<stdio.h>
#include<algorithm>
int main() {
// 대문자 (65 ~ 90)에는 -64. 소문자 (97 ~ 122)에는 -70을 하여 알파벳 52개의 int 배열 생성
int str1Cnt[60] = { 0 };
int str2Cnt[60] = { 0 };
char str[100];
scanf("%s", &str);
// 문자의 아스키코드에 해당하는 인덱스에 카운팅
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= 65 && str[i] <= 90) str1Cnt[str[i] - 64]++;
else str1Cnt[str[i] - 70]++;
}
scanf("%s", &str);
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= 65 && str[i] <= 90) str2Cnt[str[i] - 64]++;
else if (str[i] >= 97 && str[i] <= 122) str2Cnt[str[i] - 70]++;
}
// 두 배열을 끝까지 비교해서 완전히 일치하면 아나그램 판별
for (int i = 1; i <= 52; i++) {
if (str1Cnt[i] != str2Cnt[i]) {
printf("NO\n");
exit(0);
}
}
printf("YES\n");
return 0;
}
대문자 + 소문자 총 52개의 알파벳을 담을 배열을 선언한다.
인덱스 1부터 52까지 연속적으로 배열을 구성하기 위해서 대문자에는 64를 빼고, 소문자에는 70을 뺀다.
문자열을 입력하면 '\0' 값이 나올 떄까지 for문 진행한다.
문자열에서 문자 하나씩 값을 가져와서 그에 맞는 알파벳 배열에 카운팅한다.
두 번째 문자열도 똑같이 진행한다.
두 알파벳 배열이 완전히 일치하는지 for문을 돌면서 확인한다.
'알고리즘 > C++' 카테고리의 다른 글
[C++] 온도의 최대값 ( 시간 제한 ) (0) | 2020.02.24 |
---|---|
[C++] 층간소음 ( 기준치 초과하는 최대값) (0) | 2020.02.24 |
소수의 개수 ( 1초 시간제한 ) C++ (0) | 2020.02.19 |
뒤집은 소수 C++ (소수판별, 숫자 뒤집기) (0) | 2020.02.19 |
가장 많이 사용된 자릿수 C++ (0) | 2020.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- iOS 검은 화면
- iOS 데이터베이스
- pythonanywhere배포방법
- CellForRowAt 호출안됨
- django tag
- 데이터베이스 추천
- CellForRowAt Not Called
- django 게시판
- django pythoneverywhere
- iOS 화면 안나옴
- Realtime Database
- 알파벳 카운팅
- Django
- django clean
- 장고 게시판
- Firebase 데이터베이스 추천
- 테이블출력안됨
- django 태그
- cleaned_data
- django 로그인접근
- iOS UITableView 출력안됨
- 웹 배포
- python 웹 배포
- UITableViewController Not Working
- ModelForm Form 차이
- 장고 태그달기
- pythonanywhere배포
- 까만 화면
- 실시간 데이터베이스
- django 개발일지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함