목록1차원 배열 (3)
궤도

문제 풀이 뭔가 최댓값을 먼저 구하고 그 값을 기준으로 모든 수를 조작한 뒤 새롭게 평균을 구해야할 것 같은 착각이 드는 문제다. 하지만 사실 그냥 기존 입력의 합을 구한 뒤 (합)/(최댓값)*100/N 해주면 된다. 괜히 어려운척 하는 문제다. 소스코드 #include using namespace std; int main() { int N, max = -1, i; double sum = 0.0; cin >> N; int* score = new int[N]; for (i = 0; i > score[i]; if (score[i] > max) max = score[i]; //최댓값 sum += score[i]; //걍 일일히 안하고 한번에 더해서 나누면 되던디 } cout

문제 풀이 42로 나눈다는 사실이 고정됐기 때문에 쉬운 문제이다. 42로 나눈다면 그 나머지는 0~41일 것이다. 그럼 해당 나머지의 출현 횟수를 세어주는 42 크기의 int 배열을 만들면 된다. 배열을 채운 뒤 한 번 돌아주며 저장된 값이 0이 아닌 인덱스를 체크해주면 된다. 소스코드 #include using namespace std; int main() { int num, remain[42], count = 0, i; for (i = 0; i > num; int R = num % 42; remain[R]++; } for (i = 0; i < 42; i++) { if (remain[i] != 0) ..

문제 풀이 입력을 받을 때마다 그 수를 최소, 최대값과 비교했다. 입력을 전부 한번에 받고, 비교를 할 수도 있었겠지만 for문을 2번 쓰는게 귀찮았다. min과 max를 갱신할 때 if - else if를 사용하지 않았다. 왜냐하면 만약 배열에 수가 하나인 경우엔 그 수가 최소값이자 최대값이 되겠지만 if - else if문을 사용하면 둘 중 하나만 갱신되기 때문에 값이 제대로 반영되지 않는다. 소스코드 #include using namespace std; int main() { int N, min = 1000001, max = -1000001; cin >> N; int* A = new int[N]; for (int i = 0; i > A[i]; if (A[i] < min..