4-F 경우의 수 질문입니다.
27
1 asked
강사님 너무나도 강의 잘 듣고 있습니다 !! 좋은 강의 해주셔서 너무나 감사합니다. 문제를 풀다가 생긴 궁금증 몇개 질문 드립니다.
K <= 4 라면 a, n, t, i, c 의 글자를 모두 학습하지 못하니 배울 수 있는 단어의 수가 몇가지가 오던간에 출력 값은 0으로 설정해도 맞는걸까요 ?
index == 26까지 재귀해야 하는 이유가 무엇인가요 ? 더 정확하게는 index == 26까지 순회시키게 하는 생각의 도달이 어떻게 이루어져야 할까요 ? 저는 처음에 경우의 수가 K만큼 다 차면 count함수에 들어가게끔 로직을 구성했었어서 질문드립니다 ㅎㅎ..
Answer 2
0
안녕하세요 ㅎㅎ
K <= 4 라면 a, n, t, i, c 의 글자를 모두 학습하지 못하니 배울 수 있는 단어의 수가 몇가지가 오던간에 출력 값은 0으로 설정해도 맞는걸까요 ?
-> 네 맞습니다. K가 4 이하라면 이 5개를 전부 배울 수 없습니다. 따라서 어떤 단어가 오더라도 읽을 수 없습니다.
index == 26까지 재귀해야 하는 이유가 무엇인가요 ? 더 정확하게는 index == 26까지 순회시키게 하는 생각의 도달이 어떻게 이루어져야 할까요 ? 저는 처음에 경우의 수가 K만큼 다 차면 count함수에 들어가게끔 로직을 구성했었어서 질문드립니다 ㅎㅎ..
->
index == 26까지 재귀하는 이유는 “알파벳 전체 선택 여부를 끝까지 결정하기 위해서”입니다.
이 문제는 결국 이런 문제입니다.
26개의 알파벳 중에서 K개를 고른다.
그중 a, n, t, i, c는 이미 고정으로 골라야 한다.
나머지 알파벳 중에서 K - 5개를 골라 읽을 수 있는 단어 수를 최대로 만든다.
즉 재귀는 알파벳을 하나씩 보면서
이 글자를 배울 것인가?
이 글자를 배우지 않을 것인가?
를 결정하는 탐색입니다.
그래서 index는 현재 보고 있는 알파벳 번호입니다.
index = 0 // a
index = 1 // b
...
index = 25 // z
따라서 index == 26이 되었다는 것은 a부터 z까지 모든 알파벳에 대해 선택 여부 판단이 끝났다는 뜻입니다. 이때 “현재 선택된 글자 조합으로 몇 개의 단어를 읽을 수 있는지” 계산합니다.
질문하신 것처럼 “K개가 다 찼을 때 바로 count 함수에 들어가는 방식”도 가능합니다. 오히려 더 효율적일 수 있습니다.
둘 다 맞습니다.
정리하면 이렇습니다.
K개가 다 찼을 때 count한다
→ 조합을 완성하는 순간 검사하는 방식입니다.
index == 26일 때 count한다
→ 모든 알파벳의 선택 여부를 끝까지 결정한 뒤 검사하는 방식입니다. 완전탐색의 종료 조건으로 이해하면 됩니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
asdsa112님, 좋은 질문 감사합니다! “4-F 경우의 수” 문제에 대해 문의주신 두 가지 질문에 대해 답변드리겠습니다.
K <= 4일 때의 출력값:
- 이 문제는 주어진 단어들을 가장 많이 읽을 수 있는 수를 구하는 문제로, ‘anta’와 ‘tica’를 구성하는 필수 알파벳(‘a’, ‘n’, ’t’, ‘i’, ‘c’)를 배우지 못하면 어떤 단어도 읽을 수 없습니다. 따라서 K가 5 미만이라면 필수 알파벳을 다 배우지 못하는 상황이므로, 출력값은 0이 맞습니다. 따라서 이 조건을 코드의 초기 검증 단계에서 처리해주시면 됩니다.
- 이 문제는 주어진 단어들을 가장 많이 읽을 수 있는 수를 구하는 문제로, ‘anta’와 ‘tica’를 구성하는 필수 알파벳(‘a’, ‘n’, ’t’, ‘i’, ‘c’)를 배우지 못하면 어떤 단어도 읽을 수 없습니다. 따라서 K가 5 미만이라면 필수 알파벳을 다 배우지 못하는 상황이므로, 출력값은 0이 맞습니다. 따라서 이 조건을 코드의 초기 검증 단계에서 처리해주시면 됩니다.
index == 26까지 재귀를 진행하는 이유:
- 알파벳은 총 26자입니다. 이 문제는 가능한 모든 알파벳의 조합을 검사해서 최적의 조합을 찾는 형태로 해결할 수 있습니다. 재귀 호출을 통해 알파벳 0부터 25(index로는 0에서 25까지)를 탐색하면서 최적의 배울 조합을 찾는 과정입니다.
- index가 26이 되었을 때는 모든 알파벳을 검사했기 때문에 재귀 호출을 종료하고 배운 알파벳을 가진 현 상태에서 단어를 몇 개 읽을 수 있는지를 계산하는 함수(count)를 호출하게 됩니다. 이는 모든 알파벳의 가능한 조합을 다루기 위함입니다.
- 알파벳은 총 26자입니다. 이 문제는 가능한 모든 알파벳의 조합을 검사해서 최적의 조합을 찾는 형태로 해결할 수 있습니다. 재귀 호출을 통해 알파벳 0부터 25(index로는 0에서 25까지)를 탐색하면서 최적의 배울 조합을 찾는 과정입니다.
보충 자료로 볼 수 있는 기존 질문과 답변들이 있어 관련 링크를 드립니다:
- 4-F질문있습니다!: 이 게시물에서는 go 함수의 경계 조건과 count 함수 호출 시점에 대한 설명이 있습니다.
- 4-F 기저사례 질문: 기저사례에서 필수적인 부분과 배움의 유무에 관련된 심화 설명이 담겨 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
코딩살구클럽 입장이 안됩니다
0
36
2
코딩살구클럽 가입이 안됩니다.
0
57
2
살구 클럽에 대한 질문있습ㄴ디ㅏ
0
47
1
교안 158페이지 문의드립니다
0
41
2
코딩살구클럽 관련 건의사항
0
102
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
41
1
진행 방법 질문드립니다!
0
75
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
61
2
2주차 개념#12 트리 순회
0
32
2
백준사이트가 종료된다고 합니다.
0
307
2
백준 서비스 종료
9
928
1
sk 하이닉스 코테 대비
0
380
2
3-G 최댓값 질문
0
52
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
84
2
3-I 코드 질문드립니다.
0
63
2
3-N 질문 있습니다.
0
68
2
학습방법
0
104
2
4-H 질문 있습니다 (코드 리뷰)
0
67
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
178
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
70
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
65
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
52
2
조합 재귀 풀이 확인 해주시면 감사하겠습니다.
0
70
2
함수별 시간복잡도
0
75
2

