article thumbnail image
Published 2021. 2. 7. 15:56

#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
복사했습니다!