본문 바로가기
반응형

전체 글101

[ 알고리즘 ] 코딩 백준 17144 - 미세먼지 안녕!!.java 백준 17144 - 미세먼지여 안녕 * 자바로 구현 * R x C 크기. * 1번열에 공기청정기 설치. 두행 차지. ( 2x1 size, -1로 표시) * 청정기가 없는 칸에는 미세먼지가 있음. 미세먼지의 양은 Ar,c * 1초동안 아래와 같은 일이 발생. * 1. 미세먼지 확산. -> 미세먼지가 있는 모든 칸에서 동시발생. * - 4방향으로 확산. 공기청정기가 있거나, 칸이 없다면 확산x * - 확상양은 Ar,c/5 소수점 버림 * - 남은 미세먼지의 양은 Ar,c - (Ar,c/5)x(확산된개수) * 2. 공기청정기 작동 * - 공기청정기에서 바람 나옴. * - 청정기의 위쪽바람은 반시계방향 순환. * - 청정기의 아래쪽 바람은 시계방향으로 순환. * - 바람이 불면 바람의 방향으로 모두 한칸씩 이동.. 2020. 9. 7.
[ 알고리즘 ] 코딩 백준 1753 - 최단경로.java 백준 1753 - 최단경로 * 자바로 구현 * 방향그래프가 주어지고 주어진 시작점에서 다른 모든 정점으로의 * 최단경로를 구하는 문제. * 모든 가중치는 10이하. * V 2020. 9. 7.
[ 알고리즘 ] 코딩 백준 2933 - 미네랄.java 백준 2933 - 미네랄 * 자바로 구현 * 두 사람은 한 동굴의 소유권을 가지고 싸운다. * 두 사람은 막대기를 던지며 싸우는데 미네랄을 파과할 수도 있다. * 동굴은 R x C크기. 각 칸은 비었거나 미네랄이 존재 * 네 방향중 하나로 인접한 미네랄은 한 클러스터. * 한 사람은 왼쪽에 또 다른 사람은 오른쪽에 서있음. * 번갈아가며 막대기를 던짐. 막대는 날아가는 높이가 있고, 땅과 수평을 그리며 날아감. * 날아가다 미네랄을 만난다면 미네랄은 파괴되고 막대기는 멈춤. * 미네랄이 파괴된 경우에는 클러스터가 분리될 수도 있음. 분리된 클러스터는 중력의 영향을 받아 바닥으로 떨어지는데 다른 클러스터를 만나거나, 땅에 떨어질 때 까지 이동. 아래와 같이 붉은 x가 파괴되는 순간 하늘에 있는 클러스터는 .. 2020. 9. 7.
[ 알고리즘 ] 코딩 백준 15961 - 회전초밥.java 백준 15961 - 회전초밥 * 자바로 구현 * 벨트위에 회전초밥이 있음. 같은 초밥이 둘 이상 있을 수있다. * 1. 연속으로 k개의 초밥​을 먹으면 가격을 할인해준다. * 2. 모든 고객에게 초밥의 종류가 쓰여진 쿠폰을 주고, 1번행사에 참가한 경우 이 쿠폰에 적힌 종류의 초밥을 무료로 준다. * 행사에 참여하여 가능한한 많은 양의 초밥을 먹을 때 최대값을 출력 * 무조건 연속된 경우만을 고려해야한다!! * N : 접시수, d : 초밥의 가지수, k : 연속해서 먹는 접시 수, c : 쿠폰번호 ​* 생각하는데도... 테스트케이스도 .... 상당히 시간이.. 걸렸다.. * 큐로 짜도 괜찮을 거 같다! public class BOJ_15961_Rotate_Sushi { static int N, d, k,.. 2020. 9. 7.
[ 알고리즘 ]코딩 백준 9663 - N-Queen - 1차원배열을 이용해서 구현.java 백준 9663 - N-Queen * 자바로 구현 * 1차원 배열로 짜는 방법. * 이렇게 깔끔하게 짤 수 있게 열심히 공부해야겠다 public class BOJ_9663_Queen { static int N; static int[] sel; static int totalCnt; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); sel = new int[N+1]; setQueens(1); // 1열부터 시작 System.out.println(totalCnt); } // 퀸을 현재(row) 행에 놓기 public static void setQueens(int row) { if(row > .. 2020. 9. 5.
[ 알고리즘 ] 코딩 백준 1406 - 에디터 만들기 - Double Stack -.java 백준 1406 - Editor 만들기 * 자바로 구현 * 스택을 2개 사용해야 한다고 한다. * 현재 커서를 기준으로 왼쪽과 오른쪽 두개의 스택을 운용하면 4개의 연산을 처리하는데 걸리는 시간은 매우 적다 * 알고리즘적 사고를 많이 키워야겠다!! public class Editor_Double_Stack { public static void main(String[] args) throws IOException{ Editor_Double_Stack ep = new Editor_Double_Stack(); ep.editor(); } /** 에디터 구현 부*/ private void editor() throws IOException{ BufferedReader br = new BufferedReader(new.. 2020. 9. 5.
[ 알고리즘 ] 코딩 백준 2606 - 새로운 바이러스.java 백준 2606 - 새로운 바이러스 * 자바로 구현 * 어떤 그래프가 주어진다. * 해당 정점이 바이러스가 걸린다면 ( 이 문제에서는 1번으로 고정 ) * 연결된 모든 정점이 감염된다. * 어떤 한 정점이 감염되었을 때 * 그로인해 감염되는 컴퓨터의 수를 구하라 * BFS로 구현 public class BOJ_2606_New_Virus { static int VERTEXS, EDGES, totalCnt; static int graph[][]; static boolean visited[]; public static void main(String[] args) throws Exception { // 속도 개선을 위해 BufferedReader, StringTokenizer 이용 BufferedReader br.. 2020. 9. 5.
[ 알고리즘 ] 코딩 백준 2580 - 스도쿠 채우기.java 백준 2580번 - 스도쿠 채우기 * 자바로 구현 * 주어진 행렬에서 모든 칸을 규칙에 맞게 넣은 뒤 출력하기. * 빈 칸인 경우 봐야할 것. ** 가로줄에서 자신이 들어갈 숫자 찾기 ** 세로줄​에서 자신이 들어갈 숫자 찾기 ** 자신이 있는 작은 9칸에서 들어갈 숫자 찾기 * 3가지 검사를 마치고 나온 숫자가 존재한다면 해당 숫자를 가지고 * DFS수행, BackTracking public class BOJ_2580_Sudoku { static int[][] sudoku; // 스도쿠 정보를 입력할 2차원 배열 // 스도쿠의 정보를 입력 받을 때 빈칸의 정보를 담을 리스트 static List zlist = new ArrayList(); // 스도쿠 판에서 비어있는 칸의 위치 정보를 저장하는 클래스 .. 2020. 9. 5.
[ 알고리즘 ] 코딩 백준 2887 - 행성 터널.java 백준 2887 - 행성터널 * 자바로 구현 * 행성의 위치는 x,y,z 의 좌표로 주어짐. * 행성간 터널을 뚫는데, A(x1,y1,z1) - B(x2,y2,z2)가 주어지고 * min(|x1-x2|,|y1-y2|,|z1-z2|)를 구하면 된다. * 예를들어 A(1,2,3) B(10, 2, 32) 인 경우에는 y좌표가 같으므로 비용은 0이 된다. * 행성 10만개.. 좌표값 -10^9 ~ + 10^9 * X좌표를 기준으로 정렬하고 Edge 추가 * Y좌표를 기준으로 정렬하고 Edge 추가 * Z좌표를 기준으로 정렬하고 Edge 추가 ​ * 모든 Edge를 가중치를 기준으로 오름차순 정렬 * 정렬 된 Edge에 대해서 Kruskal 적용 public class BOJ_2887_Planet_Tunnel { .. 2020. 9. 5.
반응형