전체 글 24

DFS (PRO 네트워크)

https://school.programmers.co.kr/learn/courses/30/lessons/43162 class Solution { int solution(int n, int[][] computers) { boolean[] visited = new boolean[n]; int answer = 0; for (int i = 0; i  재귀호출시, 클래스 변수 VS 매개변수일반적인 문제 풀이에서는 매개변수로 변수를 넘기는 방식이 선호되며, n이 수천 이상이거나 재귀 깊이가 매우 깊을 경우( StackOverflowError )만 클래스 변수를 사용하는 것이 좋습니다. 일반적으로 알고리즘 문제 풀이 상황에서는 매개변수로 변수를 넘기는 방식이 ..

플로이드-워셜 (BOJ 회장뽑기)

https://www.acmicpc.net/problem/2660 import java.io.*;import java.util.*;public class Main { // 모든 노드 간의 최단경로를 구해야 한다 => 플로이드-워셜 // O(N^3)이지만, N = 50이기 때문에 가능 static final int INF = 51; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int N = Integer.parseInt(..

그리디 + 2차원배열 정렬 (PRO 단속카메라)

https://school.programmers.co.kr/learn/courses/30/lessons/42884 import java.util.*;class Solution { public int solution(int[][] routes) { // 진출 지점을 기준으로 오름차순 정렬하기 Arrays.sort(routes, (a, b) -> Integer.compare(a[1], b[1])); int answer = 1; int currentCam = routes[0][1]; for (int i = 1; i  이 코드의 주요 특징과 최적화 포인트는 다음과 같습니다: 1. 그리디 알고리즘 사용:..

그리디 + PQ (PRO 광물 캐기)

https://school.programmers.co.kr/learn/courses/30/lessons/172927 import java.util.*;class Solution { public int solution(int[] picks, String[] minerals) { int answer = 0; int totalPicks = picks[0] + picks[1] + picks[2]; PriorityQueue pq = new PriorityQueue((a, b) -> b[2] - a[2]); // "돌 곡괭이를 썼을 때의 피로도"를 기준으로 내림차순 저장 // 왜냐하면 돌 곡괭이만 광물 종류를 식별해주고, "어려운 광물이 많은 순서..

[prog 169199] 리코쳇 로봇

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { static char[][] map; static boolean[][] visited; static int[] dr = {0, 1, 0, -1}; static int[] dc = {1, 0, -1, 0}; static int startR, startC; static class Point { int r, c, cnt; Point(int r, int c, int cnt) { ..

[prog 87694] 아이템 줍기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { static int[][] map; static boolean[][] visited; static int[] dx = {0, 1, 0, -1}; static int[] dy = {1, 0, -1, 0}; static class Point { int x, y, dist; Point(int x, int y, int dist) { this.x = x; ..

[prog 77485] 행렬 테두리 회전하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr class Solution { public int[] solution(int rows, int columns, int[][] queries) { int[] answer = new int[queries.length]; int[][] referenceMap = new int[rows + 1][columns + 1]; // 값 참조용 배열 int[][] map = new int[rows + 1][columns + 1]; // 회전시킨 값 저장할 ..

[백준 1339] 단어 수학

https://www.acmicpc.net/problem/1339 그리디 알고리즘 문제이다.# 풀이방법1. 알파벳 배열을 만들고, 자릿수에 따라 가중치를 부여한다. (e.g. ABC라면 각 가중치는 A 100, B 10, C 1)2. 가중치가 가장 높은 알파벳에 9, 그 다음에 8, ... 과 같이 숫자를 배정한다. 내 풀이 (어렵게 풀었음)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Comparator;public class Main { public static void main(String[] args) th..