본문 바로가기

백준28

[백준 2252] 줄 세우기 그래프의 위상 정렬 문제입니다. 위상정렬의 자세한 내용은 추후에 따로 올리도록 하고 일단 과정은 1. 자신을 가리키는 간선이 없는 정점을 찾아 큐에 넣음 2. 큐에서 빼어 (current) current에서 가리키는 정점(next)를 찾아 그 정점의 간선 카운트를 줄이고 이게 0이라면 큐에 넣음. 2019. 4. 19.
[백준 1966] 프린터 큐 큐 문제입니다. 저번에 올렸던 프로그래머스에 있던 프린터 큐와 동일한 문제입니다. 설명은 그냥 복붙 하겠습니다. 큐에 인덱스와 우선순위를 가진 노드객체를 넣고 큐의 맨 앞을 빼오고 나머지를 이터레이터로 돌리면서 큐에 남은 노드의 우선순위를 확인합니다. (check 변수로 저장) 그리고 주석 적힌대로 현재 노드가 우선순위가 제일 높을경우 1. 현재 내가 찾을려고 했던 노드일 경우 리턴 2. 내가 찾을 노드가 아닌 경우 answer를 1 증가 시킨 후 다시 반복문 현재 노드가 우선순위가 밀릴 경우 현재 노드를 다시 큐에 붙여주는 식으로 했습니다. 2019. 4. 18.
[백준 10451] 순열 사이클 DFS문제입니다. 숫자고르기랑 비슷하지만 이건 사이클 자체의 갯수만 세면 되기때문에 1번부터 N까지 돌리면서 처음 방문한다면 사이클 갯수 1늘리고 방문체크하고 DFS로 방문체크만 하고 나오면 됩니다. 처음 풀때는 숫자고르기랑 똑같이 해서 통과했습니다. (visited가 2까지 가는경우로 체크방법) 제출 후 보니까 속도가 딱 2.5배 오래걸리더군요. 그래서 지금 올린 소스로 다시 통과했습니다. 2019. 4. 17.
[백준 2606] 바이러스 DFS 문제입니다. ArrayList형의 (컴퓨터 수+1) 크기의 배열을 생성, 배열의 원소인 ArrayList는 n번(인덱스) 와 연결된 컴퓨터들을 담을 때 사용할겁니다. 그리고 방문확인용 visited배열 생성했습니다. DFS 돌리는 방식은 1번 컴퓨터부터 시작해 1번 배열에 있는 ArrayList를 순서대로 돌면서 방문하지 않은 번호의 컴퓨터일 경우, 방문처리해주고 출력용 cnt를 1 올려주었습니다. 따로 조건문으로 탈출시키거나 리턴시키지는 않았습니다. 주석으로 된 부분은 그냥 입력 재대로 들어갔는지 확인하는 출력문입니다 2019. 4. 17.