인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

지민님의 프로필 이미지

작성한 질문수

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

[필독] 질문하는 방법

코테에 관한 질문 드립니다

작성

·

98

0

안녕하세요 선생님! 코테 전반에 관해서 질문드립니다.

 

Q1. 시간제한이 주어지지 않은 코테에서 풀이법을 고르는 방법

추가적으로 프로그래머스 같은 환경에서 시험을 보게되면 시간제한, 스택메모리 제한이 명시되어있지 않은 경우가 많은데, 이럴때에도 그냥 "무식하게 풀이 시도 → 시간복잡도 1억,1000만 넘어가면 dp 고려" 이런 흐름으로 풀면 될지 궁금합니다!

 

프로그래머스에서 dfs로 풀면 시간복잡도가 50!*10* 50인 풀이가 통과가 되어서 기준이 헷갈립니다. ㅜㅜ dfs가 더 편리하고, dfs가 적절해보이는 문제(특정 목적을 이루기 위해 여러 옵션을 보며 서칭)라도 시간복잡도가 너무 크면 안전하게 bfs로 풀어야하는걸까요? 히든테케에는 시간제한을 걸어두는 경우도 있다고 들어서 더 헷갈립니다..

 

그리고 제한이 명시되어있지 않은경우에는, 보통 최대 10배정도..?의 시간복잡도까지 허용해서 채점을 한다고 들었는데.. 너무 복잡하게 생각하지 않고 그냥 문제가 의도한것같은 방법으로 ("무식하게 풀이 시도 → 시간복잡도 1억,1000만 넘어가면 dp 고려" 의 기준으로) 풀면 될까요?

 

Q2. 제한이 명시되지 않은 코테에서 재귀함수의 최대 depth를 몇까지 호출해도 될런지 궁금합니다..!

보통 삼성같은 경우 스택메모리 1메가 제한이 있으니 함수 오버헤드를 고려할때 재귀호출 수만회까지 가능하지만, 함수 내부에서 4번 반복되는 루프 같은것이 있다면 호출 가능 횟수가 급격히 줄어들어 10회 내외까지가 안전한 재귀 호출 depth라고 생각합니다. 그런데 제한이 명시되지 않은 코테에서 재귀 호출 depth 까지는 신경쓰지 않아도 될까요??

 

Q3. main 함수가 주어지지 않는 프로그래머스 환경에서 코테를 볼때, ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);을 호출하는 방법

인터넷에서 찾아보니

  1. main 함수 만들기

  2. 전역에 호출하기

이렇게 두가지 방법이 있는데 이 둘 중에 아무거나 써도 되는걸까요..?

추가로 scanf , printf를 쓸때는, ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);를 쓰면 안된다고 하는데 맞는 이야기인가요?

 

감사합니다 ㅎㅎ

답변 1

0

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

안녕하세요 지민님 ㅎㅎ

프로그래머스에서 dfs로 풀면 시간복잡도가 50!*10* 50인 풀이가 통과가 되어서 기준이 헷갈립니다.

-> 50팩토리얼이 통과되는건 처음 봅니다... 코테때는 절대 안될 것 같습니다.

 

이럴때에도 그냥 "무식하게 풀이 시도 → 시간복잡도 1억,1000만 넘어가면 dp 고려" 이런 흐름으로 풀면 될지 궁금합니다!

->

해당 부분은 개념교안 1주차 다음 부분 참고부탁드립니다.

스크린샷 2025-02-08 오전 8.41.25.png.webp

 

 

Q2. 제한이 명시되지 않은 코테에서 재귀함수의 최대 depth를 몇까지 호출해도 될런지 궁금합니다..!

-> depth를 기준으로 시간복잡도를 측정하실 줄 알아야 합니다. 몇 depth가 아니라 해당 부분을 기반 -> 시간복잡도 측정 -> 드가자 이런 판단이 되셔야 합니다.

 

함수 내부에서 4번 반복되는 루프 같은것이 있다면 호출 가능 횟수가 급격히 줄어들어 10회 내외까지가 안전한 재귀 호출 depth라고 생각합니다.

-> 얼핏봐서는 4^n이라고 생각이 드는데 이것도 함수마다, n의 최대크기마다 다릅니다.

 

이렇게 두가지 방법이 있는데 이 둘 중에 아무거나 써도 되는걸까요..?

-> main에 써주세요.

 

추가로 scanf , printf를 쓸때는, ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);를 쓰면 안된다고 하는데 맞는 이야기인가요?

-> 음.. 반은 맞고 반은 틀린얘기입니다. scanf.. 를 써도 cin, cout을 쓰지 않으면 써도 되긴 합니다. 이부분은 교안내 이부분 참고부탁드립니다

스크린샷 2025-02-08 오전 8.44.24.png.webp

 

 

 


 


 

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

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

감사합니다.

강사 큰돌 올림.

 

지민님의 프로필 이미지
지민
질문자

뭘 물어도 항상 명쾌한 답변 감사합니다! 50! 문제 통과된 이유가 단순히 테케가 빡빡하게 안주어져서 그런 것 같습니다. 프로그래머스 문제중에는 백준과 다르게 문제에서 알려준 최대 범위에 해당하는 테케를 안넣어둬서 시간복잡도가 이론적으로 매우 높아지는 dfs 형식이 통과되는것이 종종 있네요..!!

프로그래머스 환경기반 코테에서는 그런것 신경안쓰고 테케 당연히 빡빡하다고 생각하고 원래 문제 풀듯 풀겠습니다 감사합니다 ㅎㅎ

지민님의 프로필 이미지

작성한 질문수

질문하기