[BOJ] 16674 2018년을 되돌아보며

GirlFriend-Yerin·2020년 8월 27일
0

알고리즘

목록 보기
102/131

Note

주어진 수가 2018과 관련 없는 수인지, 관련있는 수인지, 밀접한 수인지, 묶여있는 수인지 구분해서 출력해주자

양의 정수 n의 범위가 int 범위에 포함 되지만 처리는 문자열 처리와 비슷하기에 입력을 문자열로 받는다.
각 자리의 수를 헤아리기위한 배열을 두어 각 자리의 수를 헤아리면 된다.

알고리즘

  1. 입력 문자열을 받는다.
  2. 입력된 자리의 수를 카운팅 한다.
  3. 2, 0, 1, 8중 다른 수가 존재하면 0을 출력한다.
  4. 2, 0, 1, 8중 한개라도 0이면 1을 출력한다.
  5. 2, 0, 1, 8중 한개라도 개수가 다르면 2를 출력한다.
  6. 3, 4, 5 조건을 전부 만족하면 8을 출력한다.

소스코드

#include <iostream>

using namespace std;

int digits[10];

int main()
{
	int res = 1;
	char input[11];

	cin >> input;

	for (int i = 0; input[i] != '\0'; i++)
		digits[input[i] - '0']++;

	// Related
	for (int i = 0; i < 10; i++)
	{
		if (i == 0 || i == 1 || i == 2 || i == 8)
			continue;

		if (digits[i] != 0)
		{
			res = 0; break;
		}
	}

	if (res != 0)
	{
		res = 1;
		if (digits[0] && digits[1] && digits[2] && digits[8])
		{
			res = 2;
			if (digits[0] == digits[1] && digits[1] == digits[2] && digits[2] == digits[8])
				res = 8;
		}
	}

	cout << res;
	return 0;
}

2019-03-31 23:23:13에 Tistory에서 작성되었습니다.

profile
개발할때 가장 행복한 개발자입니다.

0개의 댓글