인프런 커뮤니티 질문&답변
31번 질문있습니다.
작성
·
192
0
선생님, 이런식으로 풀었고 돌려보니 잘 결과가 나오는걸 알 수 있는데
채점폴더에서는 0점을 받아서 의문이 듭니다.
제 코드에 어떠한 부족함이 있는지 가르침을 주시면 정말 감사하겠습니다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
char ox[100];
cin >> ox;
int index = 1;
int ccount = 0, hcount = 0;
int value = 0;
if (ox[index] != 'H') {
while (ox[index] != 'H') { ccount++; index++; }
for (int i = ccount; i > 0; i--) { value += (ox[i] - '0') * pow(10, ccount - i); }
value *= 12;
index++; //H의 바로다음
//while (ox[index] != '\0') { hcount++; index++; }
//cout << index << endl;
if (ox[index] == '\0') { value++; printf("1%d \n", value); }
while (ox[index] != '\0') { hcount++; index++; }
for (int i = index - 1; ox[i]!='H'; i--) { value += (ox[i] - '0') * pow(10, index-1 - i); }
printf("%d \n", value);
}
if (ox[index] == 'H') {
value = 12; index++;
if (ox[index] == '\0') { printf("%d \n", ++value); }
if (ox[index] != '\0') {
while (ox[index] != '\0') { hcount++; index++; }
for (int i = index - 1; i > hcount; i--) { value+=(ox[i] - '0')* pow(10, index - 1 - i); }
printf("%d \n", value);
}
}
}답변 1
2
김태원
지식공유자
0점이 나오는 코드는 아닙니다. 제 컴퓨에서 채점해보니 60점 나옵니다. 1, 2, 3번데이터는 잘 나옵니다.
4번, 5번 데이터가 틀린답으로 결과가 나옵니다. 채점 폴더에 있는 4번, 5번 입력 데이터를 직접 입력해서 출력하면서 디버그 해보세요. 바로 오류를 찾을 수 있을 겁니다. 이런식으로 공부하라고 채점데이터를 제공한 것입니다. 본인이 짠 코드의 에러를 찾아나가면서 클리어 할 때 문제해결력이 길러집니다. 이 순간이 진짜 중요한 공부이니 스스로 찾아보기 바랍니다. 몇 시간을 해도 못 찾겠으면 그 때 아래 제가 수정한 코드를 보세요.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
char ox[100];
cin >> ox;
int index = 1;
int ccount = 0, hcount = 0;
int value = 0;
if (ox[index] != 'H') {
while (ox[index] != 'H') { ccount++; index++; }
for (int i = ccount; i > 0; i--) { value += (ox[i] - '0') * pow(10, ccount - i);}
value *= 12;
index++; //H의 바로다음
if (ox[index] == '\0') { value++; printf("%d\n", value);}
else{ //C2H와 같은 입력에서 두 번 출력되지 않게 방지하기 위해 if ~ else ~ 로 바꿈
while (ox[index] != '\0') { hcount++; index++; }
for (int i = index - 1; ox[i]!='H'; i--) { value += (ox[i] - '0') * pow(10, index-1 - i);}
printf("%d \n", value);
}
}
if (ox[index] == 'H') {
value = 12; index++;
if (ox[index] == '\0') { printf("%d \n", ++value); }
if (ox[index] != '\0') {
while (ox[index] != '\0') { hcount++; index++; }
//CH123와 같은 입력에서 123을 제대로 계산하기 위해 for문이 반복횟수 조정
for (int i = index - 1; i >= (index-hcount); i--) { value+=(ox[i] - '0')* pow(10, index - 1 - i);}
printf("%d \n", value);
}
}
}





