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

Kyoung Jun Kim님의 프로필 이미지
Kyoung Jun Kim

작성한 질문수

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

5-H

5-H 강의 질문 입니다.

해결된 질문

작성

·

485

·

수정됨

0

5-H 풀이 강의

투포인트 개념적용되는 문제로,

중복되는 숫자가 나올때까지 e 를 증가시키고중복되는 수가 나오면 s 를 증가시키는 개념인 것은 이해를 했습니다만,

s/e 가 변화해가면서 실질적으로 경우의 수를 산출하는 디테일한 부분에서 설명하신 내용만으로는 이해되지 않는 부분이 있어 질문 남깁니다.

 

4:41 경에

1을 포함하는 집합을 다 빼야한다고 말씀해주셨는데요.

말씀하신 문맥 흐름 상으로만 보면 경우의수에서 뺀다는 뜻으로 이해가 될 수가 있을 것 같습니다.

코드상 ret 에는 아래와 같이 더해주는데 ret+=(e-s);
뺀다는 표현이 어떤 의미인지 확인 부탁드립니다.

코드 기반으로 제가 이해한 것은
e = 3, s = 0 인 경우 (e-s) = 3 이고,
1 / 12 / 123 에 대한 경우의 수를 ret 에다가 더해주는 것으로 저는 이해했습니다.  

 

4:59 경에

s=1 이 되면서 "이 구간(=갈색구간?)" 이 완성되는거라고 하셨는데, s 가 0 에서 1 이 되면서 비로소 2 / 3 / 1 구간 설정이 되는것인데, s=1 이 되고 2 / 3 / 1 구간에 대한 경우의 수를 확인할수있게 되는 것으로 보이는데요

완성되었다는 표현이 어떤것을 의미하는것인가요?

 

답변 1

0

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

안녕하세요 ㅎㅎ

대략적으로 이해하신바가 맞습니다.

 

4:41 경에

1을 포함하는 집합을 다 빼야한다고 말씀해주셨는데요.

말씀하신 문맥 흐름 상으로만 보면 경우의수에서 뺀다는 뜻으로 이해가 될 수가 있을 것 같습니다.

>> 음.. 0번째 요소에 1이 있죠? 그렇기 때문에 다시 1이 나왔을 때!! 그 이전의 1을 포함한 중복되지 않은 집합의 경우의 수를 만들기 위해 e 에다 s를 빼서 e - s를 만들어서 ret += e - s를 합니다. = 1, {1, 2}, {1, 2,3}에 해당하는 경우의 수를 더한다. 와 의미가 같습니다.

1 / 12 / 123 에 대한 경우의 수를 ret 에다가 더해주는 것으로 저는 이해했습니다.  

>> 네 맞습니다.

4:59 경에

s=1 이 되면서 "이 구간(=갈색구간?)" 이 완성되는거라고 하셨는데, s 가 0 에서 1 이 되면서 비로소 2 / 3 / 1 구간 설정이 되는것인데, s=1 이 되고 2 / 3 / 1 구간에 대한 경우의 수를 확인할수있게 되는 것으로 보이는데요

완성되었다는 표현이 어떤것을 의미하는것인가요?

>> 처음 e = 3, s = 0이였지만 1이 있고 s++이 되면서 그 다음 범위인 e = 3, s = 1이 완성되면서 그 다음 경우의 수인 {2, 3, 1}부터 시작하는 경우의 수를 확인하기 위한 첫번째 구간이 완성된다는 의미입니다.

감사합니다.

Kyoung Jun Kim님의 프로필 이미지
Kyoung Jun Kim

작성한 질문수

질문하기