Algorithms

    [Greedy] 프로그래머스 체육복, 큰 수 만들기, 구명보트, 단속카메라

    [Greedy] 프로그래머스 체육복, 큰 수 만들기, 구명보트, 단속카메라

    체육복 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; import java.io.*; class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = 0; int resP = reserve.length; //여벌 체육복 가진 학생 수 int lostP = lost.length; PriorityQueue pqStudent..

    [Algorithm] Greedy 그리디 알고리즘

    [Algorithm] Greedy 그리디 알고리즘

    그리디 알고리즘의 핵심 이론 수행 과정 1. 해 선택: 현재 상태에서 가장 최선이라고 생각되는 해를 선택 2. 적절성 검사: 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사 3. 해 검사: 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사. 전체 문제를 해결하지 못하면 1로 돌아가 과정 반복 백준 Greedy algorithm 문제 백준 11047 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 A..

    [Dynamic Programming] 프로그래머스 정수삼각형

    정수 삼각형 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dp[i][0]은 좌표 이동 루트가 다르므로 예외처리 해주고 나머지는 같은 로직으로 반복 단, 거쳐간 숫자의 최대 합을 구해야하므로 (현재 위치한 숫자 + 대각선 위 왼쪽과 오른쪽 각각의 값) 비교해주고 더 큰 값만 dp에 저장해주면 된다. import java.util.*; class Solution { public int solution(int[][] triangle) { int ..

    [DFS/BFS] 프로그래머스 타겟넘버, 네트워크

    https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 깊이/너비 우선 탐색(DFS/BFS) 타겟넘버 class Solution { static int answer = 0; public int solution(int[] numbers, int target) { DFS(numbers, target, 0, 0); return answer; } public static void DFS(int[] numbers, int target, int sum, int ..

    [Algorithm] DFS, BFS

    [Algorithm] DFS, BFS

    DFS 기본 로직 key) 후입선출, 스택 자료구조 사용, 재귀 형태 1. 시작 노드를 정한 후 사용할 자료구조 초기화 > 필요한 초기 작업은 무엇인가? 인접 리스트로 그래프 표현하기, 방문 배열 (visited) 초기화하기 스택에 노드를 삽입할 때 visited T로 바꿔주는 것! 2. 스택에서 노드를 꺼낸 후, 꺼낸 노드의 인접 노드를 다시 스택에 삽입 이미 다녀간 노드는 재삽입하지 않는 것이 원칙임. > 모든 노드를 다 돌 때까지 반복함. 백준 11724 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부..

    [완전탐색] 프로그래머스 최소직사각형

    https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색 들어가기에 앞서 내 뻘짓을 되돌아본다 , , 문제를 읽은 후 초기 배열에서 구한 최대 최소를 저장하고난 후에 y,x 바꿔가면서 조건 체크하고, swap해주면서 최댓값 갱신하면 되겠구나... 뭐 이런 반복문을 몇번이나 써야되는지 모를 이상한 로직을 세웠다. 결과는? 30분 삽질 ㅠ_ㅠ import java.io.*; import java.util.*; class Solution { publ..