알고리즘 (20) 썸네일형 리스트형 [PGS] 프로그래머스 - 여행경로 (JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { static int[] visited; static PriorityQueue pq; public void dfs(String cityName, String[][] tickets, String path, int node){ if(node==tickets.length){ //다 돌았다 pq.add(path); return; } for(.. [백준] BOJ20920 - 영단어 암기는 괴로워 (JAVA) https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net import java.util.*; import java.io.*; public class Solution { static HashMap words; public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new .. [백준] BOJ1806 - 부분합 (JAVA) https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N =S){ ans = Math.min(end-start.. 슬라이딩 윈도우 / 투 포인터 (JAVA) 부분 배열을 활용하여 선형 공간(1차원 배열)을 2회 이상 반복적으로 탐색해야 할 경우의 O(N^2) 이상의 시간 복잡도를 O(N)으로 줄일 수 있다. 윈도우가 이동하면서 윈도우 내의 데이터를 이용하여 문제를 해결하는 알고리즘. 슬라이딩 윈도우 : 부분 배열의 길이가 고정적 배열이 고정적이기 때문에 포인터가 하나만 있어도 된다. 기존 구간에서 빠지게 되는 가장 왼쪽칸의 값을 삭제하고 새 구간에 포함되는 값을 추가해주면 된다. 우선순위 큐를 활용하기도 한다. 적용 문제 : https://tech-heng.tistory.com/93 투포인터 : 부분 배열의 길이가 가변적 모든 배열의 값들을 필연적으로 탐색하여 특정 조건을 일치시키는 개수 혹은 최소,최대 값 찾는 문제에서 연속되고 가변적인 부분 배열을 활용 .. [PGS] 프로그래머스 - N개의 최소공배수 (JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 최대공약수, 최소공배수 로직을 알고 있으면 금방 풀 수 있는 문제이다. 두개의 수로 차례대로 최소공배수를 구해나가면 마지막 수가 n개 수의 최소공배수가 된다. import java.util.*; class Solution { public int solution(int[] arr) { int answer = arr[0]; for(int i=1; i [BOJ] 12100번 : 2048(Easy) (JAVA) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 1. 상,하,좌,우 이동에 따른 map을 계속 저장하며 dfs를 수행한다. 2. 이동횟수 5번이 되면 return 3. 최종적으로 MAX 값을 출력한다. move method는 이 방식으로 동작한다. import java.util.*; import java.io.*; public class Main { static int N; static int map[][]; sta.. [SWEA] 1949. 등산로 조성 (JAVA) https://swexpertacademy.com/main/solvingProblem/solvingProblem.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 등산로는 가장 높은 봉우리에서 시작해야하므로 지도를 입력하면서 가장 높은 봉우리를 구한다. 2. 가로 또는 세로 방향으로 연결 되어야 하므로 사방탐색을 한다. 높이가 낮은쪽으로만 이동할 수 있다. 3. 딱 한 곳을 정해서 최대 K 만큼 깎을 수 있다. -> 여기서 생각을 많이 했는데, 최대 K 만큼 깎을 수 있으므로 이동할 봉우리에서 K만큼 뺐을 때 현재 봉우리보다 작으면 이동이 가능하며, 이동할 봉우리를 현재 봉우리보다 1만큼 작은 수가 되.. [PGS] 프로그래머스 - 입국심사 (JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; import java.io.*; class Solution { public long solution(int n, int[] times) { long answer = Long.MAX_VALUE; Arrays.sort(times); long left = 0; long right = times[times.length-1] * (long)n; while(left 이전 1 2 3 다음