문제 링크 체육복 🤔 문제 이해 및 알고리즘 유형 전체 학생의 수 : n 체육복을 도난 당한 학생들의 번호가 담긴 배열 : lost 여벌의 체육복을 가져온 학생드의 번호가 담긴 배열 : reserve 출력 해야 하는 값 : 체육수업을 들을 수 있는 학생의 최댓값 조건) 제한 사항 : 전체 학생 2 빌려줄 수 없음 lost와 reserve 배열은 정렬이 되어 있지 않으므로 정렬 필수!! 알고리즘 유형 Greedy(탐욕법), 구현 💡 문제 해결 방법 1) reserve 배열 안에 있는 번호가 lost 안에도 있으면 reserve에서 삭제 1-1) 이때 reserve값과 lost값 큰값으로 바꾸기 2) n에서 lost.length 빼고 num에 저장 2-1)num을 구할 때 lost.length에서 30보다 ..

전체 글
문제 링크 https://school.programmers.co.kr/tryouts/71851/challenges 💡 문제 해결 방법 이 문제에서 가장 중요한 부분은 형 변환과 배열 저장이다. 1.long 형태의 변수를 String형으로 변환 -> Long.toStinrg 사용 2.string 형태를 char 리스트 형태로 변환 -> 변수명.toCharArray() 사용 3.for문 돌면서 인덱스 하나하나 char->int 형으로 변환 후 int 형 배열 리스트에 저장 -> for문 사용 및 char->int형으로 변환 4.출력 💻 코드 import java.util.Arrays; class Solution { public int[] solution(long n) { String num = Long.to..
백트래킹이란? 해를 찾아가는 도중 결과 값이 도출될 것 같지 않으면 과정을 중단하고 되돌아 가는 과정 완전 탐색 방법 중 하나인 깊이 우선 탐색(DFS)를 진행하면서 조건을 확인하고 해당 노드가 유망하지 않으면 탐색을 중단 -> 이는 반복문의 횟수를 줄일 수 있으므로 효율적이다. 백트래킹 기법의 유망성 판단법 유망하다(promising) : 해가 될 가능성이 있으면 유망하다라고 판단 가지치기(pruning) : 유망하지 않는 노드에 가지 않는 것을 말함 백트래킹과 DFS의 차이 백트래킹 : 불필요한 탐색을 하지 않는다. DFS : 모든 경우의 수를 탐색한다. 백트래킹을 이용한 백준 문제 리스트 1.N과 M import sys n,m=map(int,sys.stdin.readline().split()) s=..
DFS란? 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리 2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리 3. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복 4. 결국 스택이 빈 스택이 되었을 때 종료됨 DFS 코드 작성하는 법(Python) def dfs(graph,v,visited): visited[v]=True print(v,end=' ') for i in graph[v]: if not visited[i]: dfs(graph,i,visited) graph = [ [], [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], [2,6,8], [1,..