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

dkswhdgur1209님의 프로필 이미지
dkswhdgur1209

작성한 질문수

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

1-C

1-C질문입니다!

작성

·

332

0

안녕하세요 강사님!

http://boj.kr/f2b4f302a918471c9cff405182b5137f

여기에서 14행~17행에 관해 각 행에 대해서 질문이 있습니다.

  1. 14행은 cnt[j]를 초기화 하였고, 그 값을 선언하지 않았으니 cnt[j]의 값은 저절로 0이 되는것입니까?

  2. 15행부터 17행의 값들을 더하는 함수를 선언하지 않고 20행처럼 ret만을 출력해도 A,B,C의 값이 더해지는 이유가 += 기호때문이 맞습니까?

  3. 14행,15행,16행- if, 17행- else로 하지 않고 14행,15행- if, 16행,17행- else if로 하신 특별한 이유가 있나요?

  4. 8행에서 문제의 조건인 1<=C<=B<=A<=100을 고려하지 않고 단순하게 cin >> A >> B >> C를 해도 되는 이유가 사용자가 입력하기 때문인 단순한 이유인가요?

?

 

 

 

 

답변 2

1

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

안녕하세요 1209님 ㅎㅎ

  1. 14행은 cnt[j]를 초기화 하였고, 그 값을 선언하지 않았으니 cnt[j]의 값은 저절로 0이 되는것입니까?

>> 전역변수로 선언했으니 0으로 초기화 됩니다.

  1. 15행부터 17행의 값들을 더하는 함수를 선언하지 않고 20행처럼 ret만을 출력해도 A,B,C의 값이 더해지는 이유가 += 기호때문이 맞습니까?

>> 더하는 것은 += 기호로 합니다.

  1. 14행,15행,16행- if, 17행- else로 하지 않고 14행,15행- if, 16행,17행- else if로 하신 특별한 이유가 있나요?

if, if, if로 해도 됩니다. 특별한 이유는 없습니다.

  1. 8행에서 문제의 조건인 1<=C<=B<=A<=100을 고려하지 않고 단순하게 cin >> A >> B >> C를 해도 되는 이유가 사용자가 입력하기 때문인 단순한 이유인가요?

>> 문제의 범위가 그렇게 주어지기 때문에 범위를 입력 단계에서는 고려하지 않아도 됩니다.

 

if(cnt[j]){

else if(cnt[j] == 1) ret += A;

>> 이건 잘못된 코드인 것같은데요. if >> 안에 if문이 들어가야 합니다.

예를 들어

if(cnt[j]){

if(cnt[j] == 1) ret += A;

이렇게 들어가야 합니다. cnt[j]가 있을 때!! 해당 부분을 확인한다라는 의미니까요.

감사합니다.

0

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

추가적으로 if, else if, else의 사용법에서 if와 else if에는 조건이 나오고, else에는 조건이 안나와도 되는 걸로 알고있는데, 14행을 if, 15~17행을 else if로 바꾸면 실행이 안되는 이유가 무엇일까요?

if(cnt[j]){

else if(cnt[j] == 1) ret += A;

else if(cnt[j] == 2) ret += 2 * B;

else if(cnt[j] == 3) ret += 3 * C;

}

}

dkswhdgur1209님의 프로필 이미지
dkswhdgur1209

작성한 질문수

질문하기