깊이우선탐색(DFS;Depth-First Search)
·
Computer Science/Algorithm
DFS 란?깊이우선탐색(DFS;Depth-First Search) 알고리즘은 그래프나 트리구조에서 깊이를 우선으로 탐색하는 알고리즘이다.즉 한 경로를 끝까지 다 탐색한 후에 다음 경로로 넘어가 탐색을 이어간다.주로 스택(Stack)이나 재귀함수를 사용하여 구현하고, 더이상 탐색할 노드가 없으면 이전 분기점으로 돌아간다(=백트래킹).  DFS의 동작 방식0. 탐색이 필요한 노드를 저장할 스택과 방문 처리를 위한 visited 변수가 필요하다.1. 시작노드를 스택에 넣는다2. 스택이 비어있지 않다면 아래 내용을 반복한다.스택 최상단 노드를 현재 노드로 지정한다.현재 노드에 인접한 미방문 노드가 있으면 그 노드를 스택에 넣고 방문처리한다.인접한 미방문 노드가 없으면 스택에서 노드를 꺼낸다.   BFS 구현 ..
[백준/Silver III] N과 M (4) - 15652
·
코딩 테스트 정복기/백준
[Silver III] N과 M (4) - 15652문제 링크성능 요약메모리: 15976 KB, 시간: 84 ms분류백트래킹제출 일자2024년 12월 6일 04:35:21문제 설명자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 ..
[프로그래머스/level 3] 외벽 점검 - 60062
·
코딩 테스트 정복기/프로그래머스
[level 3] 외벽 점검 - 60062문제 링크성능 요약메모리: 87.8 MB, 시간: 41.07 ms구분코딩테스트 연습 > 2020 KAKAO BLIND RECRUITMENT채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 12월 05일 03:42:19문제 설명레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다.레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들이 있습니다. 따라서 내부 공사 도..
[백준/Gold IV] 트리의 지름 - 1967
·
코딩 테스트 정복기/백준
[Gold IV] 트리의 지름 - 1967문제 링크분류깊이 우선 탐색, 그래프 이론, 그래프 탐색, 트리문제 설명트리(tree)는 사이클이 없는 무방향 그래프이다. 트리에서는 어떤 두 노드를 선택해도 둘 사이에 경로가 항상 하나만 존재하게 된다. 트리에서 어떤 두 노드를 선택해서 양쪽으로 쫙 당길 때, 가장 길게 늘어나는 경우가 있을 것이다. 이럴 때 트리의 모든 노드들은 이 두 노드를 지름의 끝 점으로 하는 원 안에 들어가게 된다.이런 두 노드 사이의 경로의 길이를 트리의 지름이라고 한다. 정확히 정의하자면 트리에 존재하는 모든 경로들 중에서 가장 긴 것의 길이를 말한다.입력으로 루트가 있는 트리를 가중치가 있는 간선들로 줄 때, 트리의 지름을 구해서 출력하는 프로그램을 작성하시오. 아래와 같은 트리가..
[프로그래머스/level 2] 피로도 - 87946
·
코딩 테스트 정복기/프로그래머스
[level 2] 피로도 - 87946문제 링크구분코딩테스트 연습 > 완전탐색문제 설명XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.이 게임에는 하루에 ..
[프로그래머스/level 2] 양궁대회 - 92342
·
코딩 테스트 정복기/프로그래머스
[level 2] 양궁대회 - 92342문제 링크성능 요약메모리: 78.3 MB, 시간: 0.29 ms구분코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 12월 04일 04:04:42문제 설명문제 설명카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다.어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니..
[백준/Gold IV] N-Queen - 9663
·
코딩 테스트 정복기/백준
[Gold IV] N-Queen - 9663문제 링크성능 요약메모리: 14672 KB, 시간: 16596 ms분류백트래킹, 브루트포스 알고리즘제출 일자2024년 11월 28일 02:24:26문제 설명N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (1 ≤ N 출력첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 제출 코드백트래킹 조건:2. 같은 행에 퀸이 있을 때3. 대각선 방향에 퀸이 있을 때4. 퀸을 n개 이상 두었을 때 -> 이때는 결과에 1 더해준다.import java.io.*;public class Main { st..
[프로그래머스/level 2] 전력망을 둘로 나누기 - 86971
·
코딩 테스트 정복기/프로그래머스
[level 2] 전력망을 둘로 나누기 - 86971문제 링크성능 요약메모리: 83 MB, 시간: 11.92 ms구분코딩테스트 연습 > 완전탐색채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 11월 26일 18:27:25문제 설명n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다.송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 retu..
[코딩테스트 합격자 되기(Java)] 문제 44.스도쿠 퍼즐★★★
·
코딩 테스트 정복기/기타
문제9 x9 스도쿠 보드를 다 채워 완성된 스도쿠 보드를 반환하는 solution()함수를 작성하세요.해는 유일하지 않을 수 있습니다. 스도쿠의 조건에 맞다면 맞는 해라고 생각하시면 됩니다.스도쿠의 규칙은 아래와 같습니다.가로줄, 세로줄에는 1부터 9까지의 숫자가 한번씩 나타나야 합니다.9x9 보드를 채울 9개의 작은 박스(3 x3크기)에도 1부터 9까지의 숫자가 한번씩 나타나야합니다.  제약조건문제에 주어지는 board 중 스도쿠를 완성하지 못하는 board는 없다고 가정합니다.예를들어, 특정행이나 열에 같은 숫자가 있는 경우는 없습니다.   입출력 예시boardresult [[5, 3, 0, 0, 7, 0, 0, 0, 0],[6, 0, 0, 1, 9, 5, 0, 0, 0],[0, 9, 8, 0, 0,..