Tag: algorithms

0

백준[9466] - 텀 프로젝트

문제백준 9466 문제 보기 접근 방법시간 초과가 나기때문에 dfs를 돌지만 한 번 방문한 노드는 다시 방문하면 안된다. 한 번 방문을 체크할 때 사이클의 여부 역시 같이 판단해야한다. 사이클이 존재하면 사이클이 시작되는 노드를 저장하고 이후 계산을 통해 정답을 구한다.1 시간 가량 계속 문제가 없는것 같았는데 ‘틀렸습니다’가 나와 삽질했지만 원인은 벡터를

0

백준[7576] - 토마토

문제백준 7576 문제 보기 접근 방법bfs 완전 탐색을 이용해 토마토의 위치 값과 bfs의 실행 수를 저장하면 정답을 출력할 수 있다. 정답 출력 과정에서는 익지 않은 토마토가 있다면 무조건 -1을 출력하면 된다. 코드#include <iostream> #include <cstring> #include <queue> #include

0

백준[1991] - 트리 순회

문제백준 1991 문제 보기 접근 방법순회 시점에 따라 출력하고 재귀함수를 호출하면 정답이 출력된다. 트리의 왼쪽, 오른쪽 노드의 자료 표현을 위해 이치원 배열을 선언하고 [0]에는 왼쪽 노드를 [1]에는 오른쪽 노드를 저장했다. 코드#include <iostream> using namespace std; int N; int tree[26][2]

0

백준[2146] - 다리 만들기

문제백준 2146 문제 보기 접근 방법섬을 숫자로 분류해 섬의 갯수를 파악한 뒤 각 섬마다 돌면서 가장 자리를 증가시키는 형식으로 제출했다. 그리고 최소값을 저장한다. 하지만 메모리 초과!!이유는 59번째 주석 처리돼 있듯이 큐에 넣기 전에 방문을 체크해야하는데 큐에서 뺀 뒤 방문 체크가 이루어져 중복된 방문이 발생했다. 코드#include <iostr

0

백준[4963] - 섬의 개수

문제백준 4963 문제 보기 접근 방법동서남북과 대각선 방향을 맵의 유효 범위안에서 완전 탐색하면 답을 출력할 수 있다. 코드#include <iostream> #include <cstring> using namespace std; int h, w; int map[50][50]; int visited[50][50]; // 동 북 남 서 i

0

백준[2331] - 반복 수열

문제백준 2331 문제 보기 접근 방법최악의 상황으로 메모리를 잡고 연산을 계산해보니 시간 초과는 나지 않을 것 같아 배열을 최대로 잡고 풀었다. 먼저 계속 각 자리를 제곱해 더한 수를 따로 배열에 저장하고 계산 진행하다 추후에 반복된 숫자가 나오면 완전 탐색을 빠져 나간다.dfs함수 안에서 cnt를 세는 건 참고로 안해도 된다. 코드#include <