백준 17350번 2루수 이름이 뭐야(C언어)

최정우·2022년 7월 19일
0

백준 문제풀이

목록 보기
21/26


Code

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

int main()
{
	char arr[100];
	int N, cnt = 0;

	scanf_s("%d", &N);
	for (int i = 0; i < N; i++)
	{
		scanf_s("%s", arr, sizeof(arr));
		if (strcmp(arr, "anj") == 0)
		{
			cnt = 1;
		}
	}
	if (cnt == 1)
	{
		printf("뭐야;");
	}
	else if(cnt == 0)
	{
		printf("뭐야?");
	}
	
	return 0;
}

Key Points

  1. 입력한 문자열의 값을 비교할 때
		for (int j=0; arr[j] != '\0'; j++)
		{
			if (arr[j] == 'a' && arr[j+1] == 'n' && arr[j+2] == 'j')
			{
				cnt++;
			}
		}

이러한 코드를 작성해 중간에 "anj"가 들어가거나 단독으로 "anj"라는 이름을 가진 사람을 찾아내도록 하였다. VS에선 정상적으로 프로그램이 작동하였지만 BOJ에선 틀렸다고 나와 비교함수 strcmp를 이용해 원하는 값과 비교해 코드를 작성하였다.
2. strcmp에 대하여 간단하게 설명하자면 strcmp("a","b")이런식으로 작성을 하게되면 괄호 속 왼쪽에 있는 문자"a"에서 "b"를 뺀 값이 출력되게 된다. 즉, "b"가 "a"보다 1만큼 더 늦은 순번이므로 "-1"이 출력이 된다.
3. 이러한 성질을 이용해 만약 괄호안의 두 값이 같다면 뺀 값이 0이 되므로 두 값이 일치하는지 확인을 할 수가 있다.

profile
WHEN LIFE GIVES YOU LEMONS, MAKE LEMONADE

0개의 댓글