알고리즘
-
[java] 백준 알고리즘 1011번 Fly me to the Alpha Centauri 풀이알고리즘/백준 알고리즘 2018. 5. 30. 16:13
노가다겠지만, 거리가 1~25까지 최소 작동 회수를 구해보면 좋을 듯 싶다. 종이에 옮겨놓으면 그나마 이해가 될 때가 많다. 0~1, 0~2, 0~3, 0~4 쭉쭉 최소 작동 회수를 구해본다. 0에서 해도 되는 이유는 결국 거리를 얼만큼 최소로 이동하느냐기 때문에 45~50이 입력되든 0~5가 입력되든 거리는 5라서 상관이 없다. 쭉쭉 구하다보면 완벽한 데칼코마니가 되는 순간 이후부터 최소 작동회수가 올라간다. 예시) 0에서 1(총 1번): 1 0에서 2(총 2번): 11 0에서 3(총 3번): 111 0에서 4(총 3번): 121 0에서 5(총 4번): 1211 0에서 6(총 4번): 1221 0에서 7(총 5번): 12211....(중략).0에서 12(총 6번): 123321 0에서 13(총 7번):..
-
[java] 백준 알고리즘 1193번 분수찾기 풀이알고리즘/백준 알고리즘 2018. 5. 30. 15:59
표를 보면 0행과 0열의 숫자가 올라갈수록 분수가 몇번째인지 규칙이 있다. 대각선으로 오르락 내리락하는 걸 볼 수 있는데, 열쪽에서 행쪽으로 대각선으로 내려오면 다음 분수는 바로 행의 아래부터 시작해서 열쪽으로 올라가는 형태다. 행쪽에서 대각선으로 열쪽으로 올라가면 다음 분수는 열의 바로 오른쪽부터 시작하는 형태다. 등차수열로 올라가는 수와 +1을 반복하면서 분수가 몇번째인지 기록하게 된다. 행이 홀수번째면 +1, 행이 짝수번째면 등차가 4로 올라가는 숫자의 합이다. 그에 맞춰 열도 행이 홀수번째면 등차가 4로 올라가는 숫자의 합이고 짝수번째면 +1이 된다. ***** 그래서 입력된 숫자가 행과 열의 사이에 있다는 걸 알게된 순간 break를 걸어 분자와 분모를 찾아준다. 12345678910111213..
-
[java] 백준 알고리즘 10250번 ACM호텔 풀이알고리즘/백준 알고리즘 2018. 5. 29. 21:12
배당된 선착순만큼 높이를 나눠주면 금방 규칙을 알 수 있는 문제였다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637public class Baekjoon10250 { static StringTokenizer st; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); st = new StringToken..
-
[java] 백준 알고리즘 15802번 타노스 풀이알고리즘/백준 알고리즘 2018. 5. 28. 11:18
문제가 너무 웃겼다. 최근에 어벤져스를 보고 와서 그런가 문제 내용 공감 100% 웃겨서 바로 풀어봤는데, 백준에서 돌린 출력 결과는 알 수 없으니 난 살았을까 죽었을까 ㅋㅋ -----수정함 백준 알고리즘이 다시 들어가봤더니 재채점 되어있었고 틀렸다고 표시.. 랜덤으로 해결했을 경우를 틀렸다고 기준을 바꿨다고 했다. 다시 풀었다. 입력은 주어지지 않아도 입력은 받는 걸로 구현해야 하는 것 같았다. 거기에 어떤 것을 입력했을 때 1을 출력할지 0을 출력할지도 정해주어야 하는 것 같았다. 내 이름을 넣으면 살고 아니면 죽는걸로 해결 ^^ 풀이소스에서는 블로그 이름으로 처리ㅎㅎ * 풀이 소스 12345678910111213141516171819public class Baekjoon15802 { public s..
-
[java] 백준 알고리즘 2292번 벌집 풀이알고리즘/백준 알고리즘 2018. 5. 25. 15:00
이 문제의 규칙은 등차수열! 이다. 힌트는 이 문제의 유형이 규칙찾기였기 때문이다. 어떠한 수에 도달하기 위해 갈 수 있는 방법은 왼쪽으로 돌아갈 수도, 오른쪽으로 돌아갈 수도 있어서 딱히 고정된 방향이 있는 것 같진 않았다. 어디를 가도 1에서 시작하고, 도달하고 싶은 수가 있는 방향으로 가면 중간 과정 중에 어떤 숫자를 거쳐가든, 거쳐가는 방의 갯수는 똑같았다. 범위를 구해서 그 범위를 지나가면 '하나의 방을 지나쳤다'라고 계산하면 어떨까라는 생각을 했다. 어느 순간부터 벌집이 한칸씩 바깥으로 넓어지는지를 체크해봤다. 둘러싸는 한 원의 범위 최대값을 기점으로 한칸씩 바깥으로 커졌다. 한 원의 최대값:1 -> 7 -> 19 -> 37 -> 61 도달하고자 하는 수에 도달하기 위해 이 최대값들의 사이에 ..
-
[java] 백준 알고리즘 2941번 크로아티아 알파벳 풀이알고리즘/백준 알고리즘 2018. 5. 25. 14:44
글씨들을 걸러야 할 것 같은데 어떻게 처리할지 생각해봤다. 일단 모든 알파벳에 대해 한글자씩 추가하고, 크로아티아 알파벳으로 해당되는 문자는 하나의 알파벳으로 고려하니까 그만큼 빼주면 되겠다고 생각했다. 1. 특수문자 '-'가 붙는 글자가 나오면 앞에 어떠한 알파벳이든 앞의 알파벳과 함께 크로아티아 알파벳이 되므로 특수문자 '-'로 추가된 +1을 다시 -1을 해준다. 2. 특수문자 '='가 붙는 것은 기본적으로 어떠한 알파벳이 앞에 와도 크로아티아 알파벳이 되므로 -1을 해준다. 그러나, 'dz=' 의 경우는 3개의 문자가 1개의 문자로 취급하므로 -2가 되어야한다. 3. 'nj' 와 'lj'의 경우, 하나의 크로아티아 알파벳이므로 -1을 해준다. * 풀이 소스 12345678910111213141516..
-
[java] 백준 알고리즘 5622번 다이얼 풀이알고리즘/백준 알고리즘 2018. 5. 24. 17:06
* 풀이 소스 1234567891011121314151617181920212223242526272829public class Baekjoon5622 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String word = br.readLine(); // 입력되는 문자열 int[] perAlphabetTime = new int[26]; // 들어올 알파벳마다 걸릴 시간들의 배열 p..
-
[java] 백준 알고리즘 2908번 상수 풀이알고리즘/백준 알고리즘 2018. 5. 24. 17:02
* 풀이 소스 1234567891011121314151617public class Baekjoon2908 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringBuffer sb = new StringBuffer(br.readLine()); StringTokenizer st = new StringTokenizer(sb.reverse().toString()); // 거꾸로 읽어..