알고리즘
-
[백준 2869번] 달팽이는 올라가고 싶다 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 17. 15:51
이번에는 백준 알고리즘의 2869번 문제 "달팽이는 올라가고 싶다" 를 풀어보도록 하자 일단 문제는 매우 간단하다. 입력으로 낮에 올라가는 거리 A 미터, 밤에 자는 동안 미끄러지는 거리 B 미터, 총 나무막대의 길이 V 미터가 주어진다. 그리고 출력으로 나무막대를 모두 올라가는 데 며칠이 걸리는지 구하면 되는 문제이다. 이 문제를 푸는 데, 유의해야 될 점은 두 가지, 첫째는 입력의 상한값이 1,000,000,000 으로 long으로 받아야 된다는 점과 , 시간제한이다. 0.15초로 엄청 짧은 것을 알 수 있다. 정답 비율을 보니 30%대로 쉽지 않을 것만 같다. Java로 쉽게 풀 수 있을런지 도킷도킷 하다. 일단 문제를 풀어봤다. import java.io.*; import java.util.*; ..
-
[백준 - 1946번] 신입사원 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 16. 12:32
이번에는 백준알고리즘 1946번 신입사원 문제를 풀어보도록 하자 먼저 테스트 케이스 T가 주어지고 각 테스트 케이스마다 면접을 본 지원자의 수 N이 주어진다. 그 다음줄 부터 지원자들의 서류심사와 면접시험의 결과가 등수로 나오게 되는데, 그 등수를 이용해서 뽑힐 수 있는 신입사원의 최대 인원 수를 구하는 프로그램을 작성하면 된다. 이 문제를 풀 때 주의해야 될 점은, 테스트 케이스의 개수가 20 까지이고, 지원자의 숫자가 N이므로 반복문 만으로 풀면 시간초과가 뜰 것이 자명하다. 하여, 이번 문제를 풀때에, 쉽게 key값과 value 값을 지정할 수 있는 HashMap을 이용해서 문제를 풀었다. 먼저, HashMap을 두개 사용하여, 서류심사 등수를 key 값으로하는 HashMap, 면접시험 등수를 ke..
-
[백준 - 1699번] 제곱수의 합 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 15. 16:23
이번에는 백준 알고리즘의 1699번 문제 "제곱수의 합을" 풀어보도록 하자 이번문제에서 사용할 알고리즘은 다이나믹 프로그래밍이다. 또한, 어느정도의 수학적으로 접근법만 알고 있으면 쉬운 문제이다. 일단, 이 문제를 처음보고 아래 첨부한 것과 같이 반복문 안에다가 입력값 N을 루트를 때려버리고 그 값을 빼가면서 반복문을 돌린 횟수로 답을 구하는 알고리즘을 작성한 후 제출한 결과 틀렸다는 걸 알았는데, import java.io.*; import java.util.*; public class sample { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamR..
-
[백준 - 1049번] 기타줄 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 12. 18:07
이번에는 백준알고리즘의 1049번 "기타줄"문제이다. 다 같이 기타리스트 강토를 도와서 기타줄을 가장 저렴하게 살 수 있게 도와줘 보자 문제 자체는 매우 간단하다. 일단, 입력으로 기타리스트 강토씨 기타의 끊어진 기타줄 개수 N과 기타줄을 살 수 있는 브랜드 M이 주어진다. 먼저 각각의 브랜드에서는 기타줄 6개가 같이 들어있는 패키지 가격이있고, 낱개로 살 때의 가격 2가지의 가격이 있고, 끊어진 기타줄 N개를 사기위해 필요한 최소의 돈을 출력해주는 프로그램을 만들어 주면된다. 먼저 패키지 가격을 집어넣을 Int행렬인 pack과, 낱개 가격을 집어넣을 Int행령인 one을 지정하고, 오름차순으로 정렬해준다. int[] pack = new int[M]; int[] one = new int[M]; for (..
-
[백준 - 9461번] 파도반 수열 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 10. 14:25
이번에는 BOJ의 9461 번 문제 파도반 수열을 풀어보도록 하자 처음에 변의 길이가 1인 정삼각형부터 시작해서, 변을 이어가며 정삼각형을 그리는 문제이다. 일단, P(1) = 1, P(2) = 1, ... , P(10) = 9, P(11) = 12 가 되는 것이 그림으로, 예시로, 주어져있다. 입력으로는 테스트케이스 T가 먼저 주어지고, 각각의 테스트 케이스에 P(N) 의 N의 값이 주어진다. 출력으로 각 테스트케이스마다 P(N) 값을 출력해주면 되는 문제이다. 이문제를 풀때, 일단 N = 5 일때 까지는, 예외로 생각하고 문제를 풀었다. N = 6일 때부터 P(N) = P(N - 1) + P(N - 5) 가 되므로, 이를 이용해서 N = 1 부터 N = 100까지의 P[N]의 값을 먼저 구하게 해서,..