inflearn logo
강의

講義

知識共有

10週間完成 C++ コーディングテスト | アルゴリズムコーディングテスト

6-L

6-L 질문합니다

235

gdgd

投稿した質問数 24

0

안녕하세요, 선생님 강의 잘 듣고 있습니다!
6-L 을 풀던 도중, 제 풀이 방법이 틀렸다고 나와 반례가 궁금합니다.

시간 복잡도는 O(n* n/2) 이라 통과 한다고 생각합니다.

A[i]에 10을 곱한것은 혹시 모를 부동 소수점 오류가 날지 몰라 처리 해두었습니다.

https://www.acmicpc.net/source/70768639

c++ 코딩-테스트

回答 2

0

gdgd

cout 으로 그냥 출력하면 소수점 일부분을 날리는군요..
답변 감사합니다!!

0

kundol

안녕하세요 동훈님 ㅎㅎ

    for (int i =0; i < n; i++){
        double temp = 1;
        int cnt = 1;
        for (int j = i; j < n; j++){
            temp *= A[j];

코드를 보시면.. O(N^2)인데 이문제의 최대범위N = 1만. 즉, 동훈님이 작성하신 1억짜리 시간복잡도를 가지는 코드입니다. 물론 5000만이지만요(상수 포함하면)

이 정도면 시간초과가 날수도 있습니다.

제가 1000만이면? 1억이면? 시간초과가 날 수도 있다. 이거 좀 효율적으로 할 수 있지 않을까? 하고 들어가라고 말씀드렸는데요.

즉,

아 좀 많은 것 아닌가? 생각을 먼저하는게 1st.

그리고 나서 더이상 N^2말고 방법이 없다? 그러면 한번 들어가는게 2nd입니다.

 

자 그럼 코드리뷰 해볼게용.

동훈님 코드 리뷰

소수점 첫째자리까지 주어지며, 0.0보다 크거나 같고, 9.9보다 작거나 같다.

이 특성을 이용해서 * 10을 곱해서 하신 것 같습니다. 이외에도 pow를 사용해서 정수형으로 해결하려고 하신 것 같습니다.

ans = max(ans, double(temp / pow(10,cnt++)) );

근데 이런 걸 또 보면... 갑자기 형변환을 해서 double형인 ans와 비교하는데. 차라리 long long으로 아예 크게 잡고 long long과 비교하다가 마지막에 double로 변환하는게 좋을 것 같습니다.

 

그리고 cout은 소수점까지 출력하려면 이런 코드같은게 필요합니다. 이부분이 없었습니다.

참고로 자세한 부분은 다음의 교안을 참고해주세요.

cout의 실수 타입 출력
 cout.precision(자릿수 + 1);

 

즉, 전체적으로는 어떤 로직인지는 알겠으나 불필요한 부분, 다듬어야 할 부분이 있었습니다.

 

제가 한번 다듬어 봤습니다. ㅎㅎ

이런 로직을 원하셨던게 아닌가요?

(이 코드는 통과합니다.)

#include<bits/stdc++.h>

 
using namespace std;

int n;
double num;
double A[10010];

int main(){  
    cin >> n; 
    for (int i =0; i < n; i++){ 
        cin >> A[i]; 
    } 
    double ans = 0; 
    for (int i = 0; i < n; i++){
        double temp = 1; 
        for (int j = i; j < n; j++){
            temp *= A[j];
            ans = max(temp, ans);
        }
    } 
	printf("%.3lf", ans + 0.00001);  
    
}


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


진행 방법 질문드립니다!

0

30

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

55

2

2주차 개념#12 트리 순회

0

25

2

백준사이트가 종료된다고 합니다.

0

284

2

백준 서비스 종료

9

882

1

sk 하이닉스 코테 대비

0

367

2

3-G 최댓값 질문

0

50

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

83

2

3-I 코드 질문드립니다.

0

62

2

3-N 질문 있습니다.

0

66

2

학습방법

0

102

2

4-H 질문 있습니다 (코드 리뷰)

0

66

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

169

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

69

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

64

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

51

2

조합 재귀 풀이 확인 해주시면 감사하겠습니다.

0

68

2

함수별 시간복잡도

0

73

2

3-h 질문입니다.

0

49

1

안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.

0

53

2

1-I 문제 질문 드립니다.

0

76

2

2-P 질문입니다.

0

56

1

mac에서 시작하기 관련

0

91

2

5-Q 질문

0

64

2