article thumbnail image
Published 2021. 1. 26. 06:41

#2941: 크로아티아 알파벳

[문제]

백준 2941

 

[코드]

#include <stdio.h>
#include<string.h>

int main()
{
	char croatia[101];
	int count = 0;
	int i;

	scanf("%s", &croatia);
	for (i = 0; i < strlen(croatia)-1; i++)
	{
		if (croatia[i] == 'c')
		{
			if (croatia[i + 1] == '=')
				i++;
			else if (croatia[i + 1] == '-')
				i++;
		}
		else if (croatia[i] == 'd')
		{
			if (croatia[i + 1] == '-')
				i++;
			else if (croatia[i + 1] == 'z')
				if (croatia[i + 2] == '=')
					i += 2;
		}
		else if (croatia[i] == 'l' || croatia[i] == 'n')
		{
			if (croatia[i + 1] == 'j')
				i++;
		}
		else if (croatia[i] == 's' || croatia[i] == 'z')
		{
			if (croatia[i + 1] == '=')
				i++;
		}
		count++;
	}
	if (i == (strlen(croatia) - 1))
		count++;
	printf("%d\n", count);

	return 0;
}

 

[코드설명]

크로아티아 알파벳 표를 보면 알파벳을 c, d, l 또는 n, s 또는 z로 분류할 수 있다.입력 받은 문자열을 처음부터 마지막 문자까지 하나씩 읽어가는데, 문자가 c이면 그 다음 문자를 확인해서 '='이거나 '-'임을 확인한다. 이때 if문이 참이면 인덱스가 증가된 후 모든 if문을 빠져나와 count가 증가하게 된다. 다른 분류도 마찬가지이다. 다만 d에서는 dz= 문자가 있기 때문에 인덱스를 2증가시켜야 하는 점을 유의해야 한다.마지막으로 문자열을 다 읽고 빠져나오는데 if문으로 인덱스를 확인한 후 count를 증가시켜주는 코드가 있다. 이 코드를 넣은 이유는 for문의 조건식이 i < strlen(croatia)일 때 문자열 마지막에 크로아티아 표에 나오지 않은 알파벳이 나왔을 경우 if문에서 잘못된 인덱스를 참조하기 때문이다. 이를 해결하기 위해 for문의 조건식을 i < strlen(croatia)-1로 바꿨다. 여기서 마지막 문자가 크로아티아 알파벳인 경우에는 반복문 종료후 인덱스가  strlen(croatia)이지만, 일반 알파벳인 경우 strlen(croatia)-1이기 때문에 if문으로 인덱스 검사를 해서 count를 증가시켜줬다.

 

[채점 결과]

 

 

 

#2884: 알람 시계

[문제]

백준 2884

 

[코드]

#include<stdio.h>
int main()
{
	int hour, min;

	scanf("%d %d", &hour, &min);

	if (min >= 45)
		printf("%d %d\n", hour, min - 45);
	else 
		printf("%d %d\n", hour == 0 ? 23 : hour - 1, min + 15);

	return 0;
}

 

[코드설명]

min이 45보다 크거나 같을 땐 min에서 45만 빼주었고, 45보다 작을 때는 min에 15를 더해줬다. 총 빼야할 45분에서 min을 빼고 남은 시간을 60에서 빼주어야 하는데 이것을 식으로 간소화 하면 min+15가 된다. 이때 hour는 0이면 23을 출력하고 0이 아니면 hour에서 1을 뺀 값을 출력한다.

 

[채점 결과]

 

 

 

 

 

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

[BOJ] 1316/2869  (0) 2021.02.07
[BOJ] 2748/2750  (0) 2021.02.01
[BOJ] 1037/1712  (0) 2021.01.19
C 과제 1/2  (0) 2021.01.11
[BOJ] 10809/10773  (0) 2021.01.07
복사했습니다!