작성
·
338
0
안녕하세요 강사님!
http://boj.kr/f2b4f302a918471c9cff405182b5137f
여기에서 14행~17행에 관해 각 행에 대해서 질문이 있습니다.
14행은 cnt[j]를 초기화 하였고, 그 값을 선언하지 않았으니 cnt[j]의 값은 저절로 0이 되는것입니까?
15행부터 17행의 값들을 더하는 함수를 선언하지 않고 20행처럼 ret만을 출력해도 A,B,C의 값이 더해지는 이유가 += 기호때문이 맞습니까?
14행,15행,16행- if, 17행- else로 하지 않고 14행,15행- if, 16행,17행- else if로 하신 특별한 이유가 있나요?
8행에서 문제의 조건인 1<=C<=B<=A<=100을 고려하지 않고 단순하게 cin >> A >> B >> C를 해도 되는 이유가 사용자가 입력하기 때문인 단순한 이유인가요?
?
답변 2
1
안녕하세요 1209님 ㅎㅎ
14행은 cnt[j]를 초기화 하였고, 그 값을 선언하지 않았으니 cnt[j]의 값은 저절로 0이 되는것입니까?
>> 전역변수로 선언했으니 0으로 초기화 됩니다.
15행부터 17행의 값들을 더하는 함수를 선언하지 않고 20행처럼 ret만을 출력해도 A,B,C의 값이 더해지는 이유가 += 기호때문이 맞습니까?
>> 더하는 것은 += 기호로 합니다.
14행,15행,16행- if, 17행- else로 하지 않고 14행,15행- if, 16행,17행- else if로 하신 특별한 이유가 있나요?
if, if, if로 해도 됩니다. 특별한 이유는 없습니다.
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
추가적으로 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;
}
}