ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오 87

[백준] 감시피하기 java 18428번

https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.uti..

[백준] 2606번 바이러스 java

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net dfs 활용 import java.util.Scanner; class Main { static int n, v, count; static int[][] arr, map; static boolean[] visited; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); v = sc.ne..

[백준] 13904 과제 java

https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; import java.util.PriorityQueue; import java.util.StringTokenizer; class Main{ public static void main(String[] args) throws Excep..

[백준] 마법사 상어와 비바라기 java 21610번

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 목표 : M번의 이동이 모두 끝난 후 바구니에 들어있는 물의 양의 합을 구해보자. 문제 풀이 : map 배열 : 비바라기 크기가 N*N인 격자 visited 배열 : 구름의 위치 arr 배열 : 방향 d와 거리 s를 담은 이동명령 배열 dir 배열 : 1부터 순서대로 ←, ↖, ↑, ↗, →, ↘, ↓, ↙ list : 비구름 Pair 클래스 : list를 쌍으로 받기 위한 클래스 모든 구..

[백준] 2003 수들의 합2 java

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 투 포인터 알고리즘 리스트에서 두 개의 포인터를 이용해 순차적으로 접근합니다. 1. 첫 번째 원소와 마지막 원소에서 시작하는 경우 2. 둘 다 첫 번째 원소에서 시작하는 경우 문제 풀이 : 투 포인터에서, 2. 둘 다 첫 번째 원소에서 시작하는 경우를 사용하였습니다. start = 0, end = 0 으로 시작합니다. 투 포인터는 start

[백준] 구간 합 구하기 4 java

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 이므로 시간복잡도 O(N)이 되어야합니다. 문제 풀이 : N배열이 5 4 3 2 1일 때, 배열의 합들을 누적해서 0 5 9 12 14 15 로 만들어줍니다. i번째 수부터 j번째 수까지 합은 arr[j] - arr[i-1]이 됩니다. import java.util.Scanner; public..

[프로그래머스] 게임 맵 최단거리 java

https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제 풀이 : 최단 거리를 구해야하기 때문에 BFS를 사용했습니다. class Pair에 count 변수로 지나가는 칸의 개수의 최솟값을 넣어주었습니다. BFS를 돌면서 좌표가 팀 진영에 도착했을 때는 count를 return 해줍니다. 도착하지 못했을 때에는 -1을 return 해줍니다. import jav..

[프로그래머스] 폰켓몬 java

https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr import java.util.*; class Solution { public int solution(int[] nums) { HashSet hs = new HashSet(); for(int i = 0; inums.length/2) return nums.length/2; return hs.size(); } }

[프로그래머스] 로또의 최고 순위와 최저 순위 java

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제 풀이 : score 배열에 당첨 내용을 넣고 인덱스를 이용해 순위를 출력하였습니다. min 변수는 lottos 배열과 win_nums 배열에서 일치하는 번호 갯수로, 로또 순위의 최저 순위가 됩니다. zero_count 변수는 0의 갯수로, 로또 번호를 바꿀 수 있는 갯수입니다. 따라서 min+zero_coun..

[프로그래머스] 소수 찾기 java

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 문제 설명 : 종이 조각에 적힌 숫자로 만들 수 있는 소수가 몇 개인지 세기 문제 풀이 : 숫자를 조합하기 위해서 순열을 이용하였습니다. 순열로 뽑은 숫자가 소수인지 아닌지 판단하여 Set에 넣어주었습니다. Set은 중복이 되지 않는 특징이 있습니다. 그래서 Set 길이가 정답이 됩니다. import java.util.*; import java.u..