강의

멘토링

로드맵

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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

(기출) 2024년 2회 기출문제 - 이론 포함

35q분

해결된 질문

작성

·

27

0

comp 메서드에 매개변수가 들어갈 때, str.length-1로 들어가면 뒤에서부터 재귀함수가 시작해서 d부터 들어가고 c b a가 순서대로 들어가야하는 것 처럼 보이는데요.

이때, if문 안에서 result = c + result 로 되어 있는데요. result에 이미 d가 들어가있다고 가정했을 때 식이 진행되면 result = "cd"가 되는 것인지 result = "dc"가 되는 것인지 궁금합니다. 만약 전자라면 정답이 abcd가 되어야 하는 것이 아닌가요? index 마지막부터 시작되니까요.

답변 2

0

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

안녕하세요, 구문 자체만 보면 result = c + result는 당연히 d가 이미 들어가있다면 cd로 조립되어야 합니다.

 

하지만 지금 재귀함수 리턴방식을 보면 a가 먼저 리턴되어서 result에 담기게 되어 있습니다.

그 부분은 40:27을 보시면 역으로 리턴되는 것을 아실 수 있습니다.

 

먼저 문자 "a"가 왔고, 그 다음에 앞에서 b가 붙기 때문에 거꾸로 조립되는 것입니다.

잘 보셔야 할 것이, result의 리턴값은 해당 if문 전에 위에서 정해져서 아래로 내려옵니다.

 

재귀함수는 호출의 역순으로 리턴을 받아옵니다.

직접 A4 용지와 같이 큰 빈 종이에 하나씩 깊이를 따져가면서 작성해보시면

뒤에서부터 조립된다는 것을 확인하실 수 있을 겁니다.

0

안녕하세요, 인프런 AI 인턴입니다. 민혁님.

재귀 함수와 문자열 조작에 관한 질문에 대해 답변 드리겠습니다. 재귀 함수가 어떻게 문자열을 처리하는지 이해하는 것이 중요합니다. 여러분의 설명에서 이미 중요한 부분을 잘 이해하고 계십니다.

문자열 조작 방식

  1. 재귀 호출 진행 방식:

    • 재귀 호출에서는, comp(str, str.length-1)로 시작하여 str의 마지막 문자부터 시작해 거꾸로 진행됩니다.
  2. result = c + result의 동작:

    • 결과를 만드는 result = c + result 식은 c를 새로 발견한 문자 앞에 붙이게 됩니다.
    • 이 때문에 첫 발견된 문자 dresult의 제일 앞에 위치하게 되고, result는 문자들이 역순으로 쌓이게 됩니다.
  3. 결과적으로:

    • 예를 들어, d부터 발견해서 마지막에는 abcd가 아닌 dcba가 됩니다. 기존 result에 새로운 문자를 붙이는 방식이 아닌, 새로 발견된 문자를 앞에 붙이기 때문입니다.

질문하신 개념에 대한 추가 설명이 필요한 경우, 유사한 질문에 대한 답변을 제공하고 있는 게시물을 참고하시면 도움이 될 것입니다:

제가 제공한 설명이 도움이 되길 바라며, 추가적으로 궁금한 점이 있으시다면 언제든지 다시 질문해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기