10월 1주차[BFS/DFS]

justdoitjun·2023년 9월 30일

[BFS-DFS] Algorithm

목록 보기
4/9

[Solved] 백준 1260

from collections import deque

# dfs -> 
def dfs(graph, v, checked):
    checked[v] = True
    print(v, end = '-')
    
    for i in graph[v]:
        if checked[i] == False:
            dfs(graph, i, checked)
            
def BFS(check, graph, start):
    que = deque([start])            # (중요) BFS는 큐를 만든다
    check[start] = True            
    
    while que:                     # (중요) 재귀 호출 아니다 -> loop만 사용한다
        v = que.popleft()
        print(v, end = ' ')
        
        for i in graph[v]:
            if not check[i]:
                que.append(i)        # (중요) 방문 안한 노드의 이웃 전체 넣어줌
                check[i] = True     # (중요) 넣은건 바로 체크
#---------------------------------------------------------------------#

n, m, v = map(int, input().split())  
arr = [list(map(int, input().split())) for _ in range(m)]  

check = [False] * (n+1)             # (중요) False로 만들 것

# Create Graph (내가 만듦)
graph = [[] for _ in range(n+1)]
for i in range(len(arr)):
    graph[arr[i][0]].append(arr[i][1])
    graph[arr[i][1]].append(arr[i][0])

# 백준 1260의 조건용
for i in range(len(graph)):
    graph[i].sort()
#---------------------------------------------------------------------#

DFS(check, graph, v)
print()
check = [False] * (n+1)            # (중요) 초기화 해줘야 한다......
BFS(check, graph, v)    

[Solved] 나머지가 1이 되는 수

class Solution {
    public int solution(int n) {
        int x = 1;  //1부터 시작해서
        while(n % x != 1){ //나머지가 1이 나올 때까지 계속 돌려서
           x++;
        }
        int answer = x; //나오면 그게 answer
        return answer;
    }
}

[Solved] 없는 숫자 더하기

class Solution {
    public int solution(int[] numbers) {
        int answer = 45;
        for(int i : numbers){
            answer -= i;
        }
        return answer;
    }
}
profile
justdoitjun

0개의 댓글