반응형

코딩테스트/백준 20

99클럽 코테 스터디 23일차 TIL, 그래프(순위)

1. 문제 정의2. 문제 접근플로이드 와샬 알고리즘을 이용하여 노드의 관계를 통해 순위를 구하면 된다.3. 문제 풀이그래프를 만든다.플로이드 와샬 알고리즘을 통해 각 노드의 순위를 구한다.각 노드마다 n-1개의 순위를 알고 있으면 정답을 더해준다.정답을 리턴한다.4. 코드class Solution { public int solution(int n, int[][] results) { int[][] graph = new int[n + 1][n + 1]; int answer = 0; for (int[] e : results) { graph[e[0]][e[1]] = 1; //이겼을 경우 1로 초기화 graph[e[1]][e[..

99클럽 코테 스터디 14일차 TIL, 탐욕법(조이스틱)

1. 문제 정의2. 문제 접근탐욕법에 속해 있으니 greedy방식으로 풀면 될 것 같다.3. 문제 풀이처음 알파벳부터 시작하여 끝까지 위아래 몇번 움직이는지를 upDown에 더해준다. 순방향과 역방향 이동 중 적은 것을 구해서 갱신해준다. 마지막에 더해준다.4. 코드import java.util.*;class Solution { // int minLeft, minRight; // 역방향 최솟값, 순방향 최솟값 public int solution(String name) { int l = name.length(); int idx = 0; // 다음 값 확인 사용 int upDown = 0; //위아래 움직임 int leftRight = na..

99클럽 코테 스터디 10일차 TIL, DFS,BFS(게임 맵 최단 거리)

1. 문제 정의 2. 문제 접근 bfs를 통해 최단거리를 구해주면 될 것 같다.3. 문제 풀이bfs를 통해 최단거리 맵을 만든다.원하는 좌표의 최단거리를 리턴한다.4. 코드import java.util.*;class Solution { int n, m; int[][] dist; boolean[][] visit; int[][] dir = {{-1,0},{1,0},{0,-1},{0,1}}; public int solution(int[][] maps) { // int answer = 0; n = maps.length; m = maps[0].length; dist = new int[n][m]; visit = ne..

99클럽 코테 스터디 9일차 TIL, DFS,BFS(타겟 넘버)

1. 문제 정의 2. 문제 접근 dfs를 통해 더하는 것과 빼는 것의 모든 경우를 구하면 될  것 같다.3. 문제 풀이dfs를 통해 모든 경우를 다 구한다.target 이랑 값을 비교해 본다.4. 코드class Solution { int cnt = 0; public int solution(int[] numbers, int target) { int answer = 0; dfs(numbers, 0, target, 0); answer = cnt; return answer; } private void dfs(int[] numbers, int depth, int target, int result){ if(..

99클럽 코테 스터디 8일차 TIL, 완전탐색(소수 찾기)

1. 문제 정의2. 문제 접근dfs를 통해 만들어질 수 있는 숫자를 모두 구해 소수인지 판별해주면 될 것 같다.3. 문제 풀이dfs를 통해 만들어질 수 있는 경우의 수를 모두 구한다.isPrim 함수를 통해 소수인지 판별한다.4. 코드import java.util.*;class Solution { static List list = new ArrayList(); static boolean[] check = new boolean[7]; public int solution(String numbers) { int answer = 0; for (int i = 0; i 5. 회고처음에 dfs로 어떻게 모든 경우의 수를 구하는지가 어려웠다. 소수를 판별하는 알고리즘은 ..

99클럽 코테 스터디 7일차 TIL, 완전탐색(카펫)

1. 문제 정의 2. 문제 접근 구현 문제인듯 하다.3. 문제 풀이문제에 규칙을 찾는다.규칙에 맞는 정답을 리턴한다.4. 코드class Solution { public int[] solution(int brown, int yellow) { int[] answer = {}; // 1. (w,h) = (brown) + (yellow) 의 약수 // 2. 가로 >= 3, 세로 >= 3 // 3. 검증: (가로-2) * (세로-2) = yellow 갯수 int sum = brown + yellow; for(int i = 3; i = 3){ int w = Mat..

99클럽 코테 스터디 5일차 TIL, 정렬(가장 큰 수)

1. 문제 정의2. 문제 접근정렬을 하면 될 것 같다.3. 문제 풀이int 배열을 String 배열로 바꾼다.Comparator을 상속받아 정렬을 해준다.정답을 리턴한다.4. 코드import java.util.*;class Solution { public String solution(int[] numbers) { StringBuilder sb = new StringBuilder(); String[] strs = new String[numbers.length]; for(int i = 0; i (o2+o1).compareTo(o1+o2)); for(int i = 0; i 5. 회고정렬을 쓰면 쉽게 풀 수 있는 문제였..

17144번 - 미세먼지 안녕!

1. 문제 정의 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다. 공기청정기는 항상 1번 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있고, (r, c)에 있는 미세먼지의 양은 Ar,c이다. 1초 동안 아래 적힌 일이 순서대로 일어난다. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산..

16236번 - 아기 상어

1. 문제 정의 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 ..

16234번 - 인구 이동

1. 문제 정의 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 ..

반응형