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

mac i님의 프로필 이미지
mac i

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2022년 3회 코드해석 문제

2022 3회

해결된 질문

작성

·

172

·

수정됨

0

  • 2022 3회 1:50 result[i]++ 의 결과값이 왜 2,4, 이런식으로 나오는지 궁금합니다.

  • 전체적인 문제 풀이 과정은 이해했습니다.

  • if(arr[i]<arr[j]) 이 부분 까지 다 이해했습니다.

i가 0일 경우 true가 한개인것도 알겠는데 출력하는 마지막 부분이 이해가 안됩니다. ++ 일 경우 값에 1을 더해주는 것도 이해가 갑니다. 문제에서 어디 부분 때문에 2,4 이런식으로 출력해주는지 궁금합니다.

답변 1

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

마지막 배열의 값이 왜 {2, 4, ...}가 되는지 모르시겠다는 말씀이실까요?

우리가 구하는 값은 result의 특정 인덱스의 값입니다. 그리고 그것은 1로 매 반복문마다 초기화됩니다.

 

저 부등호가 true가 되면 해당 인덱스의 값을 ++해서 넣습니다. 1개가 있다면 1이 2로 바뀌죠.

 

저희가 true 갯수를 구한 이유가 바로 그것입니다. 몇개가 true인지 알아야 몇번 올려야 하는 지 알 수 있으니까요.

 

오른쪽에 뜨는 설명 첫줄을 보면 반복문에 들어올 때 초기값을 알 수 있습니다.

거기에다가 true의 갯수만큼 ++해줘야 하는 것입니다.

 

이해에 도움이 되셨을까요?

선생님 안녕하세요. 동일질문에서 추가적으로 혹시
result값이 초기화 되고, if문을 통하여 나온 true의 값들을 result=1+{true값의 개수}를 통하여 ,[result]포인트 변수에 넣는거구나라고 이해했습니다.

다만, 여기서 true의 값을 result 값 1에 더하는 이유를 좀 알 수 있을까요?

영상을 보았을때 이렇게 풀리는거구나는 알지만 정작 혼자서 풀때 기출이 변형될 시, 어려움을 겪을것 같습니다..

주말코딩님의 프로필 이미지
주말코딩
지식공유자

1에 더하는 이유요?

매 for문 초기화할 때 1부터 시작하게 되어있습니다.

저기 보시면 for문 바로 아래에 result[i] = 1;로 되어있습니다.

result[0] = 1

result[1] = 1

result[2] = 1

result[3] = 1

result[4] = 1

매번 i가 바뀌면서 그 부분이 1로 초기화되고,

아래 반복문에서 해당 1을 ++해서 증가시키기 때문에 1부터 하나씩 더하는 것입니다.

mac i님의 프로필 이미지
mac i

작성한 질문수

질문하기