• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

1-N 예외처리 추가

23.03.18 17:09 작성 조회수 312

1

선생님 안녕하세요! 우선 충격적인 풀이 방법 너무 잘 들었습니다. 계속 생각하다보니 예외처리를 먼저해주면 좋을 것 같은 게 있어서 질문 남깁니다.

반드시 나누어 떨어지는 경우를 생각해 보았는데, C == 1인 경우와 A%C == 0인 경우는 항상 나누어떨어질 것 같아서 선생님 풀이와 함께 미리 예외처리를 해주었습니다.

코드 링크: https://www.acmicpc.net/source/57650740

질문은 다음과 같습니다.

  1. 해당 예외처리가 유효한 것인지

  2. 1의 질문에서 만약 유효하다면, 이전 영상에서 '속도'에 관한 풀이를 하실 때, 예외처리를 먼저 해주셨는데, 이번에는 그렇지 않아서 판단의 기준은 어떻게 잡아야 하는지

  3. 예외에 걸려서 main/함수를 종료할 때 exit(0)을 써야할지 return을 써야할지

  4. 제 머리로는 이 문제를 처음 봤을 때 아무리 고민해도 풀 수가 없었는데 문제를 많이 풀면서 해결할 수 있는 부분인지

궁금합니다.

항상 좋은 강의 감사합니다!

답변 1

답변을 작성해보세요.

2

안녕하세요 ma님 ㅎㅎ

  if (A % c == 0) {
    cout << 0 << "\n"; 
    exit(0);
  }

이부분 말씀하시는 거죠?

정말 잘 짜셨습니다. 좋은 코드네요.

 

  1. 해당 예외처리가 유효한 것인지

>> 네 유효합니다.

  1. 1의 질문에서 만약 유효하다면, 이전 영상에서 '속도'에 관한 풀이를 하실 때, 예외처리를 먼저 해주셨는데, 이번에는 그렇지 않아서 판단의 기준은 어떻게 잡아야 하는지

>> 사실 케바케입니다. 시간초과 기준이 빡센 문제의 경우 저렇게 해야 풀리는 경우(예외처리를 해줘야. 빠르게 탈출할 수 있는 부분은 그렇게 해야 합니다.) 가 있습니다. 다만, 이는 문제에 일단 코드를 제출해보고 시간초과가 뜰경우 >> 예외처리하자 이렇게 하는게 좋습니다.

  1. 예외에 걸려서 main/함수를 종료할 때 exit(0)을 써야할지 return을 써야할지

>> 메인함수에서 main 하위에서는 return이구요. 함수내에서는 exit을 써야 합니다.

이 코드를 볼까요?

#include<bits/stdc++.h> 
using namespace std;  
int go(){
	if(true){
		cout << "어 종료해야하는데\n";
		return 0;
	} 
} 
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	go();
	cout << "종료가 안되네"; 
}

종료를 해야 하는데 return 0을 먹였기 때문에 종료가 안되는 것을 볼 수 있습니다. main함수가 아닌 다른 함수 내에서 main함수를 종료시키고 싶다면 exit을 걸면 됩니다.

 

 

  1. 제 머리로는 이 문제를 처음 봤을 때 아무리 고민해도 풀 수가 없었는데 문제를 많이 풀면서 해결할 수 있는 부분인지

>> 아닙니다. 꾸준히 하시면 충분히 고민하고 문제를 풀게 될겁니다. 저를 믿어주세요.

 

감사합니다.

mahns님의 프로필

mahns

질문자

2023.03.20

감사합니다 선생님. 그냥 믿고 하겠습니다.