guardian_demon   7년 전

아래 코드가 [맞았습니다]판정이 나왔는데


여기서 의문인 점은 arr[i]를 10(즉, '\n'(개행))이 아닌 42 (즉, *)로 처리하거나 32(즉, ' '(스페이스 바))로 처리해 보면

[틀렸습니다.]를 내뱉습니다.


혹시 '문자열 변형 금지'조건 같은 것이 있는 건가요?


- Guardian_demoN

chogahui05   7년 전

if문 조건에 arr[i] == 10대신 42 같은 걸 넣으면 틀렸다고 뜨는 이유를 질문하신 거 같으신데요.

천천히 알고리즘을 살펴 보면요.


for문을 돌 때 마다 벌어지는 일은..

(1) 특정 문자를 제외한 것 을 입력받거나, 49개? 50개만치의 문자를 입력받을 때까지, 계속 배열에 입력을 받습니다.

(2) i-1번째 원소와 비교해서 같으면 5를 더하고, 다르면 10을 더합니다.


 (1)번이 문제인게요. 특정 문자가 42, 그러니까 *인 경우,

((((

이렇게 입력하고 엔터를 친 경우에도 입력이 끝나지 않습니다.

개행을 만나도 조건을 만족하지 않을 거니까요. 

당연히 올바른 결과값이 나오지 않겠죠. 엔터를 쳤을 때도 계속 입력 받을 테니까요.

그에 대해서도 5나 10을 더해버리기 때문에 오답이 나오는 것이죠.

scanf를 쓰시는 게 좋으실 듯 싶네요. 

댓글을 작성하려면 로그인해야 합니다.