본문 바로가기

반응형

분류 전체보기

(644)
백준 : 1504 https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존재하며, 그 거리가 c라는 뜻이다. (1 ≤ c ≤ 1,000) 다음 줄에는 반드시 거쳐야 하는 두 개의 서로 다른 정점 번호가 주어진다. www.acmicpc.net 플로이드 와샬 알고리즘 1인 노드에서 특정 a,b를 지나고 N을 간다는 것은 1->a->b->N 방법과 1->b->a->N 방법이 있다. 물론 1->a는 항상 최단거리로 가야한다. 이럴땐 플로이드 와샬 알고리즘을 사용..
백준 : 1261 https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미한다. (1, 1)과 (N, M)은 항상 뚫려있다. www.acmicpc.net 일단 우선순위 큐를 사용하지않고 단순 큐를 사용해서도 빠른 속도로 구해진다. 문제의 해법은 digit[N][M] 크기의 2차원 크기의 배열을 INF 큰값으로초기화하고 Q에 좌표값과 현재까지 깬 돌의 횟수를 넣어서 돌린다. 그리고 digit의 값과 현재 Q에담긴 횟수를 비교회서 digit을 초기화해주면 가장 적은 벽돌로 N,M ..
백준 : 1238 https://www.acmicpc.net/problem/1238 1238번: 파티 문제 N개의 숫자로 구분된 각각의 마을에 한 명의 학생이 살고 있다. 어느 날 이 N명의 학생이 X (1 ≤ X ≤ N)번 마을에 모여서 파티를 벌이기로 했다. 이 마을 사이에는 총 M개의 단방향 도로들이 있고 i번째 길을 지나는데 Ti(1 ≤ Ti ≤ 100)의 시간을 소비한다. 각각의 학생들은 파티에 참석하기 위해 걸어가서 다시 그들의 마을로 돌아와야 한다. 하지만 이 학생들은 워낙 게을러서 최단 시간에 오고 가기를 원한다. 이 도로들은 단방향이기 때 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ..
백준 : 17136 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐 www.acmicpc.net 생각해보기 처음 단순 완전탐색을 생각햇을때 실수햇던점은 처음 1이 나온시점에서 DFS가 실패하면 그다음 칸으로가서 DFS를 실행한다. 이럴 경우 1이라..
백준 : 1916 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 그리고 그 다음에는 도착지의 도시 번호가 주어지고 또 그 버스 비용이 주어진다. 버스 비용은 0보다 크거나 같고, 100,000보다 작은 정수이다. 그리고 M+3째 줄에는 우리가 구하고자 하는 구간 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ..
특정 Map 회전 시키기 기본 Map 0 1 2 3 4 5 6 7 8 90도회전 6 3 0 7 4 1 8 5 2 조건을 찾아보면 Map[0][0] = Map[0][2] Map[0][1] = Map[1][2] Map[0][2] = Map[2][0] 가운데 인덱스는 서로같고 양쪽 합은 행렬의 lengh -1 과 같다. turnRight 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public static void turnRight(int[][] m) { int n = m.length; int copy[][] = new int[n][n]; for(int i=0;iColored by Color Scripter
JAVA : Log 함수를 이용한 자리수 구하기 Math.log10 함수를 이용한 자리수 구하기. 1 2 3 public static void main(String args[]) { System.out.println((int)Math.log10(213)+1); } http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter Log10 값은 승수를 구해준다. 1은 10^0 10 은 10^1 100은 10^2 50은 1.69 정도 나온다.. 따라서 Math.log10을 이용한 값에서 (int)형으로 변환해서 소수를 제거후 +1 해주면 빠르게 자리수를 구할수 있다.
부분집합의 조합 구하기 : JAVA 부분집합의 모든 조합 구하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package com.ssafy.algo; public class Test69 { public static void main(String[] args) { int[] A = { 1, -2, 3, -4, 5, -6, 7, -8, 9 }; int cnt = 0; //부분집합의 개수 for (int i = 0; i

반응형