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

주서님의 프로필 이미지
주서

작성한 질문수

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

Java언어 기출문제의 변형

문자열 길이, substring에 대해 질문있습니다.

해결된 질문

작성

·

68

·

수정됨

0

  1. 이전에 len함수의 경우엔 \0를 제외한 길이, a.length함수의 경우 \0를 포함한 길이 였다고 배운것 같은데.. 해당사항은 C언어 한정인가요?.. 헷갈리네요

  2. 문제 풀이를 보니 a.substring(1,4)면 4번째 자리를 제외한 문자열을 잘라 리턴해주는것 같습니다.(대충 감각따라 풀었더만 ello를 적어 틀렸네요..ㅠ) 이전 파이썬의 for문도 그렇고 이와같은 문자열 함수는 모두 1<=a<4 라고 생각하면 괜찮을까요? 아니면 예외함수가 있을까요?

답변 2

0

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

  1. '\0' 을 포함해서 길이를 재는 것은 없습니다. 그것은 전체 크기인 sizeof입니다.

    len, length와 같은 문자열과 관련된 길이의 함수나 메서드는 무조건 "순수 문자열의 길이"를 기준으로 합니다. C언어에서도 null 문자를 만나면 false가 되어 반환하는 식으로 함수를 만들었기 때문에 null이 포함될 수가 없습니다. (만약에, 정말 만약에 문제에서 null 문자까지 포함해서 리턴하라는 낚시성 함수가 나올 수도 있으니 무조건 코드 중심으로 보셔야 합니다. 이름에 낚이지 마시길.)

     

 

  1. 네 그렇게 외우셔도 됩니다. 다른 모든 언어가 그 컨벤션을 따라가는지는 모르겠지만, 적어도 자바와 파이썬에서는 그렇습니다.

     

주서님의 프로필 이미지
주서
질문자

아 제가 sizeof와 헷갈렸나보네요.. 큰 실수 할뻔했습니다.

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

네 시험은 코드를 해석하는 것이니까 만약 C언어로 나오는 경우 함수 이름 신경쓰지말고 그냥 코드 그대로 해석하시면 됩니다.

 

만약 Java처럼 원래 있는 스탠다드 라이브러리나 파이썬의 내장 함수를 물어보는 것이면 순수 문자열 길이로 동작합니다.

 

요 아래 인프런 AI 인턴도 설명해주고 있네요. null 문자를 포함하는 길이를 리턴하는 함수는 없습니다.

0

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

분명히 이해하기 어려울 수 있는 점들에 대해 설명드리겠습니다.

1. 문자열 길이와 관련된 함수들:

  • strlen 함수(C언어): strlen 함수는 문자열의 길이를 반환하는 함수로, null 문자(‘\0’)를 제외한 실제 문자 개수를 반환합니다.
  • length 관련(C/C++/Java): C 언어의 경우 문자열의 길이를 구할 때 strlen 을 사용합니다. 자바의 length() 메소드는 문자열의 null 문자를 포함하지 않습니다. 파이썬의 len() 함수도 실제 길이만 구합니다.

2. substring 및 인덱싱 관련:

  • substring(start, end) 메소드는 일반적으로 문자열을 자를 때 사용되며, start부터 end-1까지의 문자열을 반환합니다. end 위치의 문자는 포함되지 않는다는 점을 유의하셔야 합니다.
  • 자바와 파이썬 등 여러 언어에서는 이러한 규칙이 적용되며, 이는 1 <= a < 4의 개념으로 이해하시는 것이 맞습니다.

예외적인 함수들:

일반적으로 대부분의 프로그래밍 언어의 substring이나 인덱스 관련 메소드들은 end 범위의 전까지 포함하는 형식을 따르고 있습니다. 따라서, 사용하시는 언어의 문서를 확인하시고 그 규칙을 따르면 예외적인 경우는 크게 없을 것입니다.

관련 게시물:

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

주서님의 프로필 이미지
주서

작성한 질문수

질문하기