
#1316: 그룹 단어 체커
[문제]
[코드]
#include<stdio.h>
#include<string.h>
int main() {
int n, count = 0, k;
int alpha[26];
char word[101], ch;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf(" %s", word);
for (int j = 0; j < 26; j++)
alpha[j] = 0;
for (k = 0; k < strlen(word); k++) {
ch = word[k];
if (word[k] != word[k + 1])
alpha[ch - 97] += 1;
if (alpha[ch - 97] > 1)
break;
}
if (k == strlen(word)) count++;
}
printf("%d\n", count);
return 0;
}
[코드설명]
단어를 입력 받고, 알파벳의 연속성을 확인하기 위해 alpha 배열을 사용했다. 단어의 철자를 처음부터 하나씩 훑으면서 알파벳이 바뀌는 지점에서 이미 출현했던 알파벳을 기록하기 위해 alpha[ch-97]에 1을 더해준다. 그리고 alpha[ch-97]의 값이 1보다 큰지 확인하면서 크다면 알파벳의 연속성이 깨진 것이므로 반복문을 탈출한다. 그 후 if문에서 k의 값이 strlen(word)인지 확인한다. k가 strlen(word)와 같다면 word의 알파벳 연속성이 깨지지 않고 반복문이 끝까지 실행된 것이므로 count를 1 증가시킨다.
[채점 결과]
#2869: 달팽이는 올라가고 싶다
[문제]
[코드]
#include<stdio.h>
int main() {
int A, B, V;
int day;
scanf("%d %d %d", &A, &B, &V);
if ((V - A) % (A - B) == 0)
day = (V - A) / (A - B) + 1;
else
day = (V - A) / (A - B) + 2;
printf("%d\n", day);
return 0;
}
[코드설명]
달팽이가 마지막 날에 A미터를 올라 정상에 도착했을 때를 고려해서 V / (A - B)가 아니라 (V - A) / (A - B)로 계산했다. (V - A) / (A - B)의 나머지가 0이면 마지막 날에 낮동안 A미터를 올라 정상에 도착할 수 있으므로 day는 (V - A) / (A - B) + 1이 되고, 나머지가 0이 아니면 하루를 더 올라야 하므로 day는 (V - A) / (A - B) + 2 가 된다.
[채점 결과]
'알고리즘' 카테고리의 다른 글
[BOJ] 13235/2908 (0) | 2021.02.22 |
---|---|
[BOJ] 4673/16503 (0) | 2021.02.17 |
[BOJ] 2748/2750 (0) | 2021.02.01 |
[BOJ] 2941/2884 (0) | 2021.01.26 |
[BOJ] 1037/1712 (0) | 2021.01.19 |