관리 메뉴

Kim's Programming

1285. 아름이의 돌 던지기 본문

SW ExpertAcademy/D2

1285. 아름이의 돌 던지기

Programmer. 2018. 11. 30. 23:58

1285. 아름이의 돌 던지기

문제출처: https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18-stqI8oCFAZN&categoryId=AV18-stqI8oCFAZN&categoryType=CODE




풀이 방법


처음엔 절대값이 가장 작은 값을 찾은 다음 그 값의 개수를 세어 답을 구했다 하지만  전체를 다시 훑어 보는 것 보단 배열 하나를 두어 저장을 하고 인덱스를 증가 시키면서 가장 먼져 만나는 0이 아닌 값을 찾는 것이 나은거 같다.


<코드>


첫 번째

#include<iostream>
#include <cmath>
int main()
{
	int n{ 0 };
	std::cin >> n;

	for (int testCase = 1; testCase <= n; testCase++)
	{
		int peopleCount;
        std::cin>>peopleCount;
        
        int* dataArray = new int[peopleCount];
        
        int min{100000};
        for(int i=0;i<peopleCount ;i++)
        {
            std::cin>>dataArray[i];
            if(abs(dataArray[i]) <min)
                min = abs(dataArray[i]);
        }
            
        int answer{0};
        for(int i=0;i<peopleCount ;i++)
        	if(abs(dataArray[i]) ==min)
                answer++;

		std::cout << "#" << testCase << ' ' << min<<" "<<answer << "\n";
            delete[]  dataArray;
	}

	return 0;
}


두 번쨰


#include <iostream>
#include <cmath>
#include <cstring>
int main()
{
	int n{ 0 };
	std::cin >> n;

	for (int testCase = 1; testCase <= n; testCase++)
	{
		int peopleCount;
		std::cin >> peopleCount;

		int dataArray[100000 + 1];
		memset(dataArray, 0, sizeof(dataArray));
		
		for (int i = 0; i < peopleCount; i++)
		{
			int input;
			std::cin >> input;
			dataArray[abs(input)]++;
		}

		int answer = 0, min = 0;

		for (int i = 0; i < 100000 + 1; i++)
		{
			if (dataArray[i] != 0)
			{
				answer = dataArray[i];
				min = i;
				break;
			}
		}

		std::cout << "#" << testCase << ' ' << min << " " << answer << "\n";
	}

	return 0;
}

'SW ExpertAcademy > D2' 카테고리의 다른 글

1940. 가랏! RC카!  (0) 2018.12.01
1928. Base64 Decoder  (0) 2018.12.01
1288. 새로운 불면증 치료법  (0) 2018.12.01
1284. 수도 요금 경쟁  (0) 2018.11.30
1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기  (0) 2018.11.30