SW ExpertAcademy/D2
1285. 아름이의 돌 던지기
Programmer.
2018. 11. 30. 23:58
1285. 아름이의 돌 던지기
풀이 방법
처음엔 절대값이 가장 작은 값을 찾은 다음 그 값의 개수를 세어 답을 구했다 하지만 전체를 다시 훑어 보는 것 보단 배열 하나를 두어 저장을 하고 인덱스를 증가 시키면서 가장 먼져 만나는 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; }