작성
·
131
1
2주차 이론 블로그 내용에서
내부 노드의 정의가 '루트 노드와 내부 노드 사이에 있는 노드를 뜻합니다.' 로 되어 있는데 여기서 내부노드가 아닌 리프노드가 맞지 않나요?
2주차 문제 중 10709 기상 캐스터 문제 코드에서 다음 부분 질문입니다.
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(a[i][j] == 0){
int cnt = 1;
while(a[i][j + 1] == -1){
a[i][j + 1] = cnt++;
j++;
}
}
}
}
위 코드에서 while 문 내부에서 조건이 계속 만족되면 증가하는데, 인덱스 에러가 발생하지 않는 이유가 궁금합니다.
for (int j = 0; j < m; j++)
위 for loop 문의 j < m 까지라는 게 내부 while 문까지 적용되는 건가요?
2주차 문제 4659에서 isVowel을 아래와 같은 방식으로 작성하셨는데요.
bool isVowel(int idx){
return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u');
}
...
...
if (isVowel(idx))...
이를 아래와 같이 문자열로 만들어서 이 내부를 탐색하는 건 어떻게 생각하시나요? 저 위에 isVowel도 결국은 각각 일치하는지 탐색하는 거이지 않나요?
string f = "aeiou";
int main() {
for (char w : word) {
if (f.find(w) == string::npos)
...
}
}
답변 1
0
안녕하세요 제하님 ㅎㅎ
2주차 이론 블로그 내용에서
내부 노드의 정의가 '루트 노드와 내부 노드 사이에 있는 노드를 뜻합니다.' 로 되어 있는데 여기서 내부노드가 아닌 리프노드가 맞지 않나요?
>> 네 맞습니다. 해당 부분 빠르게 수정했습니다. 제 틀린 부분을 말씀해주셔서 감사합니다. ㅎㅎ
위 코드에서 while 문 내부에서 조건이 계속 만족되면 증가하는데, 인덱스 에러가 발생하지 않는 이유가 궁금합니다.
for (int j = 0; j < m; j++)
위 for loop 문의 j < m 까지라는 게 내부 while 문까지 적용되는 건가요?
>> 음.. 아뇨 for loop와는 무관하게 j++하다가 맵의 범위를 벗어나게 되면 자동으로 0을 참조하게 됩니다. 따라서 -1이 아니게 되고 자동으로 해당 while문은 종료가 되서 에러가 발생되지 않습니다.
#include <bits/stdc++.h>
using namespace std;
int n, m, a[104][104];
string s;
앞의 코드처럼 전역변수로 초기화를 했기 때문에 입력받지 않은 부분은 모두 0으로 초기화가 되어있습니다.
이를 아래와 같이 문자열로 만들어서 이 내부를 탐색하는 건 어떻게 생각하시나요? 저 위에 isVowel도 결국은 각각 일치하는지 탐색하는 거이지 않나요?
string f = "aeiou";
int main() {
for (char w : word) {
if (f.find(w) == string::npos)
...
}
}
>> 네 괜찮은 생각입니다. 좋습니다. 시간복잡도도 동일합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.