2-J 코드 질문있습니다
안녕하십니까 큰돌님
해당 문제를 bfs로 풀었는데 효율적인지 궁금합니다 !
http://boj.kr/efabd95dc54b4536956d2e87d8f80d04
답변 2
2
안녕하세요 대기업님 ㅎㅎ
너무 좋네요.
int h, w, dy = 0, dx = 1;
char a[104][104];dy, dx도 잘 하셨구요.
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (a[i][j] == 'c' && visited[i][j] == -1) bfs(i, j);
}
}방문한 정점은 다시 방문하지 않게 하신 것도 좋습니다.
좋은 코드인 것같습니다.
그러나 답안코드보다 효율적이지는 않습니다.
if(a[i][j] == 0){
int cnt = 1;
while(a[i][j + 1] == -1){
a[i][j + 1] = cnt++;
j++;
}
}답안 코드는 while 반복문을 기반으로 로직을 처리하고 있는데요.
BFS를 하게 되면
void bfs(int y, int x) {
queue<pair<int, int>> q;
visited[y][x] = 0;
q.push({y, x});이렇게 기본적으로 queue하나, visited배열 하나가 더 필요하기 때문에 효율적이라고 보기에는 어렵습니다
다만, 좋은 코드라고 할 수 있는게 그런 자료구조가 막 그렇게 많이 필요한 것도 아니고 차이가 막 그렇게 크지는 않아서요. 깔끔하고 좋습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴이에요.
문제 링크를 확인해보니, 트리의 경로를 찾는 문제인 것 같습니다. BFS로 풀이하셨다고 하셨는데, BFS는 그래프에서 최단 경로를 찾는 데에 많이 사용되는 알고리즘입니다. 따라서, 트리에서도 효율적으로 작동할 수 있어요.
BFS 알고리즘은 너비 우선 탐색을 수행하여 그래프의 모든 노드를 탐색하는 방식입니다. 큐(Queue) 자료구조를 활용하여 구현되며, 현재 노드와 인접한 노드들을 차례로 방문하고 큐에 넣는 방식으로 동작합니다. 이를 통해 트리의 루트에서 시작하여 레벨 순서대로 탐색하면서 경로를 찾을 수 있습니다.
따라서, BFS를 사용하여 트리의 경로를 찾는 것은 효율적인 방법이라고 할 수 있어요. 하지만 문제마다 최적의 알고리즘은 다를 수 있으므로, 다른 방식도 고려해보시는 것이 좋을 거예요.
이번 문제에서 BFS를 사용한 풀이에 대한 자세한 내용은 링크를 통해서 직접 확인해보시면 도움이 될 것 같아요.
더 궁금한 점이 있으시면 언제든지 물어보세요. 결과에 대한 답변이 도움이 되었으면 좋겠어요. 감사합니다.
4 - A
0
24
2
코딩살구클럽 입장이 안됩니다
0
62
2
4-F 경우의 수 질문입니다.
0
32
2
코딩살구클럽 가입이 안됩니다.
0
75
2
살구 클럽에 대한 질문있습ㄴ디ㅏ
0
54
1
교안 158페이지 문의드립니다
0
44
2
코딩살구클럽 관련 건의사항
0
115
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
44
1
진행 방법 질문드립니다!
0
81
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
63
2
2주차 개념#12 트리 순회
0
32
2
백준사이트가 종료된다고 합니다.
0
316
2
백준 서비스 종료
9
950
1
sk 하이닉스 코테 대비
0
385
2
3-G 최댓값 질문
0
54
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
84
2
3-I 코드 질문드립니다.
0
65
2
3-N 질문 있습니다.
0
68
2
학습방법
0
105
2
4-H 질문 있습니다 (코드 리뷰)
0
69
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
183
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
72
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
65
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
53
2





