티스토리 뷰
728x90
반응형
백준 온라인 저지(BOJ) 1316번 그룹 단어 체커
https://www.acmicpc.net/problem/1316
* 사용언어 : C언어, C++
1. 문제
단어 내 모든 문자가 연속해서만 나타나는 경우 그룹 단어라고 함
주어진 N 개의 단어 중 그룹 단어의 개수를 출력
(단어는 모두 알파벳 소문자로만 구성, 최대 길이 100)
2. 풀이
ASCII 값, 반복문 그리고 배열 index 에 대한 이해가 필요한 문제입니다.
특정 문자의 반복이 끊겼다는 것을 확인하기 위해서
탐색 중인 문자가 직전 문자와 다를 때, 직전 문자는 끝이라는 기록을 했습니다.
(이후 해당 문자가 나오면 그룹 단어가 아니라는 뜻이 됨)
여기서 0번 index 는 1번 index 탐색 시 확인하고 처리되므로
문자열 탐색은 0 이 아닌 1 부터 진행합니다. (k = 1)
aabca 단어를 예로 들어 처리 과정을 보여드리고 풀이는 마치겠습니다.
0번 a (처리 X)
1번 a (a 기록 안 되어 있음 → pass / 직전 문자와 같으니 기록 X)
2번 b (b 기록 안 되어 있음 → pass / 직전 문자와 다르니 a 기록)
3번 c (c 기록 안 되어 있음 → pass / 직전 문자와 다르니 b 기록)
4번 a (a 기록 되어 있음→ fail 후 반복문 break)
3. 코드
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int a[26] = { 0, };
char s[101];
int ret = 0;
int k, pass;
for (int i = 0; i < n; ++i) {
scanf("%s", &s);
for (int j = 0; j < 26; ++j) {
a[j] = 0;
}
k = 1;
pass = 1;
while (s[k]) {
if (a[s[k] - 'a']) {
pass = 0;
break;
}
if (s[k] != s[k - 1]) {
++a[s[k - 1] - 'a'];
}
++k;
}
ret += pass;
}
printf("%d\n", ret);
return 0;
}
728x90
반응형
'개발자 > 문제풀이 (C언어)' 카테고리의 다른 글
[백준/BOJ] 2292번 벌집 (C/C++) (0) | 2022.07.01 |
---|---|
[백준/BOJ] 1712번 손익분기점 (C/C++) (0) | 2022.06.30 |
[백준/BOJ] 2941번 크로아티아 알파벳 (C/C++) (0) | 2022.06.15 |
[백준/BOJ] 5662번 다이얼 (C/C++) (0) | 2022.06.14 |
[백준/BOJ] 2908번 상수 (C/C++) (0) | 2022.06.13 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 원서잡아먹는영작문
- 최재천의공부
- 세상을 읽는 새로운 언어 빅데이터
- 동탄에듀센터2
- 자이언트임팩트
- 자료구조
- 알고리즘
- 여가포인트
- 당신도느리게나이들수있습니다
- 호암의마지막꿈
- 문현공
- 삼성전자
- 긴 자리 덧셈 뺄셈
- 영화감상평
- 정세현의통찰
- 독서 감상평
- 자동차보험
- 나의첫죽음학수업
- 시대예보
- 정올
- 동탄에듀센터
- 독서감상평
- 쿠프마케팅
- 안전운전특약
- 나는늘잘해야한다고생각한다
- AdSendse
- 인간본성불패의법칙
- 긴 자리 곱셈
- JUNGOL
- 센터독서클럽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함