문제 링크 DFS와 BFS 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static int n; static int m; static int[][] graph; static boolean[] visited; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nex..
문제 링크 한수 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 풀이코드 import java.util.*; public class Main { static int answer; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); print(solution(n)); } private static int solution(int n) { int answer = 0; ..
문제 링크 피보나치 수 풀이 코드 import java.util.*; public class Main { static int[] fibo; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(solution(n)); } private static int solution(int n) { fibo = new int[n+1]; int answer = recursive(n); return answer; } private static int recursive(int n) { if(fibo[n] != 0) return fibo[n]; if(n == 0) r..
문제 링크 체스판 다시 칠하기 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // n 입력받기 int n = sc.nextInt(); // m 입력받기 int m = sc.nextInt(); // board 입력받기 char[][] board = new char[n][m]; for(..
문제 링크 숫자 야구 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static class Question { String number; int strike; int ball; Question(String number, int strike, int ball) { this.number = number; this.strike = strike; this.ball = ball; } } /** * 입,출력 */ public static..
문제 링크 사탕 게임 [3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net](https://www.acmicpc.net/problem/3085) 풀이 코드 import java.util.*; class Main { static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; static char[][] arr; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); arr = new char[n][n]; for(int i=0; i
문제 링크 부분수열의 합 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static int answer; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int s = sc.nextInt(); int[] arr = new int[n]; f..
문제링크 덩치 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 코드 import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] weightArr = new int[n]; int[] heightArr = new int[n]; for(int i=0; i
문제 링크 올바른 괄호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 코드 import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack stack = new Stack(); for(char x : s.toCharArray()) { if(x == '(') stack.push(x); else { if(!stack.isEmpty()) { stack.pop(); } else { return false; } } } if(stack.isEmpty()) ..
문제 링크 시소 짝꿍 풀이 코드 import java.util.*; class Solution { public long solution(int[] weights) { long answer = 0; // 무게배열의 길이는 10만까지 이지만, 무게는 100부터 1000까지만 존재하므로 중복을 제거한다면 최대 길이는 900이므로 중복을 제거하여 map에 담아준다. // key는 무게, value는 사람 수 Map map = new HashMap(); for(int i=0; i
문제 링크 수 찾기 ❗ 풀이 방법 main 함수에서 int n, int[] arr1, int m, int[] arr2를 입력받고 solution 메소드로 입력받은 값들을 solution 메소드에 넘겨준다. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr1 = new int[n]; for(int i=0; i
문제링크 기능 개발 풀이 코드 import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { //map으로 배포되는 기능들 중복카운팅 하기.(배포되는 일자, 배포되는 기능 횟수) Map map = new LinkedHashMap(); //탐색 배열 길이 뽑기 int len = progresses.length; int[] arr = new int[len]; // 작업들의 남은 일 수 계산하여 arr에 넣기 int beforeWorkDay = 0; for(int i=0; i workDay) workDay = beforeWorkDay; map.put(workDay, map.getOrDefault(workDa..