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

저엉님의 프로필 이미지
저엉

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-G

9996번 질문있습니다.

작성

·

41

0

안녕하세요 선생님. 강의 재밌게 잘 보고 있습니다.

 

틀린 코드

http://boj.kr/7087c3d2add44ef5af31cfac7d207cd0

 

정답 코드

http://boj.kr/377c3dd4ad1d4b0eb85986efa78476ba

 

위 코드에서 틀린 코드를 사용했을 때 틀리는 이유

결국 파싱해낸 접두사 / 접미사의 위치가

들어오는 문자열의 처음 / 마지막이 아닐 수 있어서 인가요?

 

해당 상황 예시)

[~ [접두사] * ~[접미사]

[접두사 ~ * [접미사]~]

[~[접두사] * [접미사] ~]

 

문제에서 [각각의 파일 이름이 패턴과 일치하는지 아닌지를 구하는 프로그램을 작성하시오]라고 했기 때문에

[접두사*접미사] 형태의 패턴이 입력 문자열의 부분 문자열이 되는 경우에는 파일 이름과 동일하지 않게 되는거고,

만약 문제가[접두사*접미사] 형태의 문자열이 파일 이름 내에 존재하는가?를 묻는다면 위의 로직은 옳게 작동한다고 말할 수 있을까요?

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 저엉님 ㅎ

 

[~ [접두사] * ~[접미사]

[접두사 ~ * [접미사]~]

[~[접두사] * [접미사] ~]

->

		int start = input.find(startEnd[0]);
		
		int end = input.find(startEnd[1], start+startEnd[0].size());

네 특정 문자열이 앞에 혹은 뒤에 있는 것을 확인하는 것은 저엉님이 작성하신 코드로 가능할 것 같습니다.

감사합니다.

0

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

저엉님, 해당 질문에 대한 답변을 시작하겠습니다.

주어진 문제의 경우, 주어진 패턴이 파일 이름 전체와 일치하는지 여부를 확인하는 것이므로, 접두사와 접미사 위치가 파일 이름의 시작과 끝에 정확히 위치해야 합니다. 따라서, [접두사*접미사] 형태의 패턴이 입력 문자열의 부분 문자열로 존재하는 경우, 이는 문제의 요구 조건을 만족시키지 않습니다.

예시로 든 상황에서는 접두사와 접미사가 파일 이름의 중간에 위치할 수도 있는데, 이는 문제에서 요구한 “각각의 파일 이름이 패턴과 일치하는지”를 확인하는 경우와는 다릅니다. 문제에서는 [접두사*접미사] 형태의 패턴이 파일의 시작부터 끝까지 해당 패턴으로 이루어져야 하므로, 이 조건을 충족하지 않으면 파일 이름이 패턴과 일치하지 않는 것으로 봅니다.

따라서, 만약 문제가 [접두사*접미사] 형태의 문자열이 파일 이름 내에 존재하는가?를 묻는 것이라면, 문제의 요구사항이 달라지기 때문에 그 경우에는 옳게 작동한다고 말할 수 있겠지만, 현재 주어진 문제의 조건하에서는 두 코드의 차이점이 중요한 영향을 미칩니다.

접두사와 접미사가 파일 이름의 정확한 시작과 끝에 위치해야 한다는 점에서 틀린 코드가 문제의 요구사항을 만족시키지 못하는 부분이 있는 것으로 보입니다. 정답 코드는 이러한 문제의 요구사항을 올바르게 충족시키는 로직을 구현하고 있을 것입니다.

질문에 대한 답변이 도움이 되었기를 바랍니다.

저엉님의 프로필 이미지
저엉

작성한 질문수

질문하기