강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

손정우님의 프로필 이미지
손정우

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-M

제 컴퓨터에서는 7초가 걸립니다.

작성

·

102

·

수정됨

0

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

 

질문 : 제 컴퓨터에서는 실행시간이 7초 걸립니다.

처음에 무식하게 풀었습니다.

반례를 생각하기 위해 최대 숫자인 1만을 넣었습니다.

시간이 오래걸렸습니다.

무려 7초.

그런데 문제에서 요구하는 시간은 2초.

 

잘못된 풀이였구나 넘어갔습니다.

그런데 도저히 도저히 안되어서 강의를 봤습니다.

 

제 컴퓨터에서 7초가 걸리는 강사님 코드도 제가 무식하게 푼 코드도 백준 제출을 하니 되더라구요.

 

허탈한 마음과 충격에 질문을 남깁니다.

 

컴퓨터를 껐다 키고 바로 실행시켜도 저런데 왜 저런 걸까요?

요구시간이 2초이면 c++ 기준 초당 2~3억회 연산을 처리하니 대충 4억 미만 안에 연산이 끝날 것 같으면 자신있게 백준에 제출을 해야할까요?

image.png

횡성수설 해서 죄송합니다.

 

좋은 강의 늘 감사합니다.

 

p.s 첫 질문 드림. 블로그도 잘 보고 있습니다. CS 면접강의도 듣고있습니다. 단톡에도 있습니다. 어비스 화이팅!

image.png

 

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 정우님 ㅎㅎ

혹시 컴퓨터 사양이 어떻게 되시나요?

https://www.onlinegdb.com/online_c++_compiler

image.png

이사이트에서 돌렸을 때 바로나오는 것을 볼 수 있었는데요.

PC 스펙이 좀 부족하시지 않았나 싶습니다.

음... 그게 아니라면 윈도우 최적화 문제인 것같은데요.

이걸로 최적화 부탁드립니다. (저도 쓰고 있어요 🙂 )

https://kcleaner.kilho.net/

https://malzero.xyz/download

 

요구시간이 2초이면 c++ 기준 초당 2~3억회 연산을 처리하니 대충 4억 미만 안에 연산이 끝날 것 같으면 자신있게 백준에 제출을 해야할까요?

-> 아니요. 1억이면 무조건 가능하다. 10억정도면 거의 불가능하다 라고 잡고가시는게 좋습니다. 4억정도면 되는게 있을 수 있으니 제출하는게 좋습니다.

 

c++ 기준 초당 2~3억회 연산 : 무조건 모든 C++ 프로그램이 초당 2 ~ 3억 연산하는건 처음 들어보는데요. 혹시 이거에 대한 근거가 있을까요?

 

p.s 첫 질문 드림. 블로그도 잘 보고 있습니다. CS 면접강의도 듣고있습니다. 단톡에도 있습니다. 어비스 화이팅!

-> 감사합니다. ㅎㅎ 어비스 화이팅!! 정우님도 코테 화이팅입니다!!


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

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

감사합니다.

강사 큰돌 올림.


 

 

손정우님의 프로필 이미지
손정우
질문자

image.png

 

안녕하세요.

gram 노트북 쓰고 있고

연식은 한 3년 정도 된 것 같습니다.

 

말씀하신 최적화 kc cleaner

malzero

다 해보았는데 그래도 1만입력시 4초가 뜨네요.

image.png

 

 

초당 연산 횟수 2~3억회라는 건 과거 '시간초과' 로 검색하다가 아래 글의 내용을 보고 그렇구나 라고 받아들인 내용입니다.

https://lee1201zxc.tistory.com/entry/%EB%B0%B1%EC%A4%80C-%EB%B0%B1%EC%A4%80-%EC%8B%9C%EA%B0%84%EC%B4%88%EA%B3%BC-%ED%95%B4%EA%B2%B0%EB%B2%95-%EC%9B%90%EC%9D%B8-%EC%A0%95%EB%A6%AC

 

 

친절하고 빠른 답변 정말 감사합니다.

좋은 수강평과 별점 5점은 완강 후 적겠음을 약속드리겠습니다.

 

항상 감사드리고 현재 상황에서 느린 속도에 관해 의심스러운, 그래서 더 해볼만한 것이 있는지 알려주시면 감사하겠습니다!

 

감사합니다 큰돌님!

큰돌님의 프로필 이미지
큰돌
지식공유자

저 블로그 글 틀린것 같아요. 어떤 연산인지도, 어떤 로직인지도 불명확하며 컴퓨터 스펙, 컴파일러 등에 따라 달라지는데 그렇게 단정짓는것은 아닌 것같습니다. ㅎㅎ

근데 정우님!!

코드가 오래걸리는 이유를 알아냈습니다. ㅎㅎ

틀린 부분이 있었어요.

#include <bits/stdc++.h>
using namespace std;

int cnt, n; 
int main(){
	
	ios_base :: sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL); 
	string temp; 
	
	cin >> n;
	
	for(int i = 666 ; ; i++){
		temp = to_string(i);
		if(temp.find("666") != string::npos ){ //존재한다. 
			cnt++;
		}
		
		if(cnt == n){
			cout << i << '\n';
			break;
		}
	}
	
}

이거 cnt를 전역변수로 해야 -> 0으로 초기화가 됩니다. 이거 안하면 쓰레기값이 들어가서 UB가 나서 -> 오래걸리는거죠. cnt가 0이아니기 때문에 계속해서 루프가 돌아가게 되는 것입니다.

이부분은 교안내의 다음 부분 참고부탁드립니다.

스크린샷 2024-11-29 오후 4.49.09.png.webp

 

 

감사합니다.

 

손정우님의 프로필 이미지
손정우
질문자

답변 정말 감사합니다 큰돌님.

 

그런데 시간이 더 오래 걸립니다. ㅠㅠ

 

image.pngimage.png

 

dev c++ 에서 손댄 부분은 컴파일러 부분밖에 없습니다.

 

계속 여쭤봐서 죄송합니다. 정 안되면 컴퓨터 포맷을 해볼까 합니다.

 

큰돌님의 프로필 이미지
큰돌
지식공유자

폴더 경로를 onedrive -> 배경화면으로 해주시고 실행후 캡쳐해주시구요.
https://www.programiz.com/cpp-programming/online-compiler/ 여기서 실행한 결과도 캡쳐해주세요 ㅎㅎ

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 손정우님

문제의 해답에 대해 몇 가지 설명과 함께 관련 내용이 있는 유사한 질문과 답변을 참조해 드리겠습니다.

질문하신 내용에 따르면, 백준 플랫폼에서의 실행 시간과 개인 PC에서의 실행 시간이 다른 이유를 궁금해하시는 것 같습니다. 이 문제는 흔히 발생할 수 있는 상황으로, 다양한 요소들이 영향을 미칠 수 있습니다.

  1. 컴퓨터 사양 차이: 개인 PC와 백준 서버의 하드웨어 사양이 다를 수 있습니다. 백준은 최적화된 서버 환경에서 코드가 실행되므로, 같은 코드라도 더 빠르게 실행될 수 있습니다.

  2. 입력 및 출력 차이: 보통 로컬에서는 cincout을 사용하는 반면, 더 빠른 입출력을 위해 scanfprintf를 사용하는 것이 권장되기도 합니다. 이러한 차이에 따라서 실행 시간이 차이가 날 수 있습니다.

  3. 알고리즘 최적화: 어떤 로직의 최적화 여부에 따라 실행 시간이 크게 변화할 수 있습니다. 문제를 잘 분석하고 최적의 알고리즘을 선택하는 것이 중요합니다.

  4. 작성 환경의 차이: 개발 환경이 백준과 다를 수 있으며, 이로 인해 호환성이나 성능 차이가 생길 수 있습니다.

코드를 제출할 때는 일반적으로 요구 시간에 맞춰 초당 가능한 연산 횟수를 생각하고 제출하면 됩니다. 일반적으로 C++에서는 10^8 ~ 10^9의 연산을 1초 내로 처리할 수 있다고 가정합니다.

아래 게시물에서 비슷한 사례를 다룬 적이 있으니 참고해주세요:

게시물에서는 시간 복잡도 계산 및 알고리즘 최적화에 대한 구체적인 조언을 얻을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

손정우님의 프로필 이미지
손정우

작성한 질문수

질문하기