tree1997   2년 전

5
OOXXOXXOOO
까지 대입해봤는데

왜 답이 6이 나올까요?
1부터 'O' 개수만큼 총합이 나올줄 알았는데 
6이나오네요 어떤 과정을 지나서 6이나오는지 설명해주시면 감사하겠습니다ㅠㅠ 제발...

lcr7324   2년 전

1) 4번 줄에서 a를 입력받으면 다음과 같습니다.

['O', 'O', 'X', 'X', 'O', 'X', 'X', 'O', 'O', 'O']

2) 7~8번 줄에 의해 a에 있는 모든 X가 지워집니다. 이제 a는 아래와 같습니다.

['O', 'O', 'O', 'O', 'O', 'O']

3) 10번 줄의 for문의 내부는 총 6번 실행될 겁니다.

3-1) 11번 줄의 for문의 내부는 19번 실행됩니다.

3-1-1) j = 1일 때 12번 줄의 if문은 항상 참입니다.

3-1-2) 그 결과 14번 줄에서 x에는 1이 더해지겠군요.

3-1-3) j가 1이 아니면 12번 줄의 if문은 항상 거짓입니다. a[i]는 항상 'O'인데, 비교대상인 'O'*j는 'OOO'나 'OOOOO'같은 문자열이 될테니까요. (각각 j = 3, 5일 때의 결과입니다)

4) 17번 줄에서 출력될 x의 값은 얼마일까요? 10번 줄에서 실행된 for문의 횟수와 동일합니다. 왜일까요? 10번 줄이 실행되는 횟수와 14번 줄이 실행되는 횟수가 같고, 14번 줄이 실행될 때는 j가 1일 때밖에 없기 때문입니다.

그 결과로 6이 출력됩니다.

코드가 실행되는 과정을 스스로 따라가는 것은 어렵지 않습니다. print문을 활용해서 아래처럼 직접 중간 결과값을 확인해볼 수 있습니다.

tree1997   2년 전

감사합니다 그냥 혼자 해보고 멘붕와서 답답한 마음에 질문 써봤는데 말씀하신데로 과정따라가 보며 공부해보니 문제도 맞추고 공부 방향도 잡은거 같습니다

큰가르침 감사합니다 ㅎㅎ

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