본문 바로가기

전체 글

(165)
[백준 나무자르기] 이분탐색시 시작 혹은 끝 지점 설정하는 방법 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 1. 😓Arrays.sort 사용하는 방법 - 지양하기 import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStrea..
[java] 이분탐색 백준 1920 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in..
[이분탐색] 프로그래머스 입국심사 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr start 지점: times의 최솟값 end 지점: n명 모두가 심사를 받을 때 가용할 수 있는 최대 시간 📌주의할 점 long end = (long)times[times.length-1]*n; times가 int 배열이므로 (long)으로 형변환 해주기. 요 부분 빼먹으니 정확도 55퍼 나오더라... import java.util.*; class Solution { public long solu..
[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 그리디 알고리즘 그리디 알고리즘의 핵심 이론 수행 과정 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 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) 둘째 줄부..