본문 바로가기
스터디IT🌼/Algorithm

[ 완전탐색 ] 알고리즘 내용 정리

by 동백사과 2023. 1. 12.

✅ 완전탐색

- 모든 경우의 수를 다 고려해야 하는 경우를 의미 

- 시간복잡도가 큰 편!  

 

✅ 완전탐색 문제 판별법

1. 하나의 경우마다 따져야 할 게 명확한 경우

2. 어떤 상태를 구성하고, 그 상태가 특정 조건을 만족하는지 검토해야 하는 등의 문제

3. 나올 수 있는 경우의 수가 모두 탐색할 수 있을 만큼 크기가 적을 때

 

 완전 탐색 문제 접근 방식

1. 모든 경우를 생성할 수 있는 방법을 생각

2. 각각의 경우에 대해 그 문제의 조건을 만족하는지 체크 ( 문제에 따라 다름 )

 

 완전탐색 방법

1. BruteForce : 반복문과 조건문을 이용하여 처음부터 끝까지 탐색하는 방법

2. 비트마스크

3. 순열 : 순열 시간 복잡도는 O(n!)

4. 재귀를 호출 -> 백트래킹

5. DFS / BFS

 

 

 고려사항

1. 완전 탐색의 경우 주어지는 n의 크기가 작다. 

2. 답의 범위가 작고 임의의 답을 선택시 역추적이 가능!

 

 

🎯 관련 문제

1. 백준 14501 - 퇴사 : https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

더보기

핵심 아이디어 : dfs  -> 오늘 상담하는 경우와 오늘 상담하지 않는 경우 모두 고려

 

2. 백준 2309 - 7명의 난쟁이 : https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

더보기

핵심 아이디어 : 9명 중 7명을 선택하는 모든 경우의 수를 고려해야 함. ( 글쓴이는 dfs + 백트래킹 사용 ) 

 

3. 백준 15651 - N과 M(3) : https://www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

더보기

핵심 아이디어 : 연속 중복 사용이 안되므로 마지막에 사용한 숫자를 알아야 함 ( 마지막에 사용한 숫자에 따라 다음 사용 가능한 경우가 달라짐 )

 

 

🎯 문제 풀어 보기!

- https://school.programmers.co.kr/learn/courses/30/parts/12230

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

- https://www.acmicpc.net/workbook/view/9371

 

문제집: 코딩 테스트 준비 - 기초 (code.plus)

 

www.acmicpc.net

 


 

댓글