갓비니

2020/04/08 코딩문제 연습 (6단계 / 백준 3052,1546번 )C++ <절대오차 상대오차> 본문

Programming/코딩 문제 풀이

2020/04/08 코딩문제 연습 (6단계 / 백준 3052,1546번 )C++ <절대오차 상대오차>

갓비니 2020. 4. 9. 00:11

문제들이 너무 어렵고 안풀리다보니 뭔가 의욕이 저하되었다.....

힘내보자!!!

<3052번 문제>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
 
 
/*3052번*/
int main() {
    int arr[42= { 0 };
    int num;
    int count = 0;
 
    for (int i = 0; i < 10; i ++) {
        cin >> num;
        arr[num % 42]++;
    }
    for (int i = 0; i < 42; i++) {
        if (arr[i] != 0)count++;
    }
    cout << count;
 
 
 
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http:

!= 이다!! 무조건 등호가 오른쪽에 오는거다.

그리고 나머지값이 같다면 같은 인덱스넘버(=나머지값) 아래에 묶어주면

중복되는 횟수를 한 칸에 넣을 수있으니,

개꿀이군.

 

<1546번 문제>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int num;
    cin >> num;
    double *score = new double[num];
    double *new_score = new double[num];
    double MAX=0;
    double sum = 0;
    double result = 0//////////아.. 연산에 int가 섞여있으면 결과값 int아님..? 바보..
 
 
 
    for (int i = 0; i < num; i++) {
        cin >> score[i]; //과목 수만큼 점수 입력받음
    }
    for (int i = 0; i < num; i++) {
        if (score[i] >= MAX)MAX = score[i]; //제일 잘 받은 점수 정하기
    }
    for (int i = 0; i < num; i++) {
        
        new_score[i] = (score[i] / MAX) * 100// 점수 조작해서 넣어주기-형 문제가 여기서 발생 ㅠㅠ
        
    }
    for (int i = 0; i < num; i++) {
        sum=new_score[i]+sum ;
    }
    result = sum / num;
    cout.precision(4); //최대 4자리까지 출력 (소숫점은 10e-2까지 출력)
    cout << result;
 
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

유의할 점!!!! double=int/int --> 결과값이 int형이 된다

원하는 형으로 출력하고싶다면 모든 애들을 같은 형으로 변환해줘야한다!!!!!!

이것때메 진짜 오래 헤맸다......

 

그리고 맨날 나오는!

실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.

10-2 이하의 오차를 허용한다는 말은 정확히 소수 2번째 자리까지 출력하라는 뜻이 아니다.

 

이 설명 얼척이 없네요..... 그냥 10e-2이하의 오차를 허용한다는건

그 자릿수까지만 출력하고 나머지 밑 찌끄래기들은 틀려도 된다는거잖아요(버려도 된다)...ㅜㅜㅜ

저번에는 이거 하려고 round함수 찾아가면서 했었던 기억이 난다

 

....

 

ㅠㅠ