[BOJ] 2875 대회 or 인턴

GirlFriend-Yerin·2020년 8월 26일
0

알고리즘

목록 보기
51/131

Note

백준대학교에서는 총장님의 권력이 막강해 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는데 올해는 인턴십 때문에 사람을 빼야한다.
최대한 사람좀 많이 남겨보라는 총장님의 지시를 이행하는 문제

최대가 100번이기에 반복문을 사용해도 괜찮다.
생각을 그대로 옮기면 되는 문제. 잉여 인원을 먼저 인턴십에 다 보낸 후, 동시에 2명씩 줄여나가면 되는 문제다.

여러 경우로 나눠서 nested-if 문을 사용해 풀어보려 했으나 생각보다 코드가 길어져서 while문을 통해 반복 하는 형태로 구현했다.

알고리즘

  1. n 과 m * 2 의 관계를 통해 n을 1씩 감소시키거나 m을 1씩 감소 시킨다.
  2. 1번 알고리즘을 k가 0이 될 때 까지 반복한다.
  3. n / 2가 m 보다 작을 경우 결과값을 n / 2로 설정한다.
  4. m을 결과값으로 출력한다.

소스코드

#include <iostream>

using namespace std;

int main()
{
	int n, m, k;

	cin >> n >> m >> k;
	
	for (;k > 0; k--)
	{
		if (n >= (m * 2))
			n--;
		else if (n < (m * 2))
			m--;
	}

	if ((n / 2) < m)
		m = n / 2;

	cout << m;

	return 0;
}

2019-01-16 12:30:00에 Tistory에서 작성되었습니다.

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

0개의 댓글