Algorithm
-
백준 / 1152 / 단어의 개수Algorithm 2020. 3. 22. 16:28
문제 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. 출력 첫째 줄에 단어의 개수를 출력한다. 입출력 예 해결 자바에서 제공하는 함수를 적절하게 사용해 해결한다. 코드 느낀점 문제를 풀면서 trim 메소드를 알게되었다. 입력 받을 때 유용하게 사용할 수 있을 것 같다. 출처
-
백준 / 11726 / 2*n 타일링Algorithm 2020. 3. 22. 16:08
문제 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 입출력 예 해결 동적 프로그래밍을 이용해 해결 할 수 있다. 2*0 -> 1, 2*1 -> 1, 2*2 -> 2, 2*3 -> 3 ... d[n] = d[n-2] + d[n-1] 코드 느낀점 비슷한 문제를 유튜브에서 봐서 그런지 로직은 빨리 구현할 수 있었다. 그러나 2*0도 경우의 수가 1이 존재한다는 사실을 간과했으며 10007로 나누는 것을 마지막 요소에만 해서 오류가 발생했다. 출처
-
백준 / 14501 / 퇴사Algorithm 2020. 3. 22. 15:45
문제 입력 첫째 줄에 N (1 ≤ N ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000) 출력 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. 입출력 예 해결 재귀 함수를 이용해 최대 값을 구할 수 있다. 코드 느낀점 bf 문제라는 힌트가 있는데도 불구하고 문제를 너무 어렵게 생각해서 풀지 못했다. 문제를 침착하게 읽고 직관적으로 바라보는 방법을 터득해야한다.. 출처 https://ballpython.tistory.com/15 [백준 14501 : 퇴사] Java 백준 14501번 퇴사 문제입니다. schedule 메소드에서 1)day번째 날에 상담을 하는 경우와 2..
-
백준 / 2667 / 단지번호붙이기Algorithm 2020. 3. 21. 19:03
문제 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각 단지내 집의 수를 오름차순으로 정렬하여 한 줄에 하나씩 출력하시오. 입출력 예 해결 dfs로 탐색하면서 숫자를 세서 해결할 수 있다. 코드 느낀점 그래프 문제는 전체적으로 비슷한 느낌을 많이 준다. 그래서 이번 문제를 올리면서 딱히 주석 달만한게 없어서 안달았다. 앞으로 그래프 문제가 나와도 겁먹지 않을것같다. 출처
-
백준 / 11654 / 아스키 코드Algorithm 2020. 3. 20. 15:15
문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. 입출력 예 해결 Char를 Int 로 Casting 하면 해결되는 아주 간단한 문제이다. 코드 느낀점 이 문제 덕분에 다른 문제에서 아스키 코드를 요구할 때 간단하게 풀 수 있을 것 같다. 출처
-
백준 / 11047 / 동전 0Algorithm 2020. 3. 20. 15:10
문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 입출력 예 해결 정렬을 이용한 그리디 알고리즘으로 해결할 수 있다. 코드 느낀점 동전 교환과 같은 문제들은 거의 그리디 알고리즘인 것을 알 수 있다. 출처
-
백준 / 2178 / 미로 탐색Algorithm 2020. 3. 20. 14:53
문제 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. 출력 첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 수 있는 경우만 입력으로 주어진다. 입출력 예 해결 bfs를 이용해 최적의 경로를 파악할 수 있다. 코드 느낀점 bfs를 이용해 탐색하는 기능은 구현했으나 최소로 지날 수 있는 값은 구할 수 없었다. 다른 블로그를 참고해보니 이전 경로의 값에 1을 더해가는 방식으로 해결했다. 그래프에 대한 이해도가 높았다면 풀 수 있는 문제였다.. 출처 https://ggmouse.tistory.com/315 [JAVA] 백준 알고리즘 2178 : 미로 탐색 (BFS) 빠..
-
백준 / 1003 / 피보나치 함수Algorithm 2020. 3. 18. 20:38
문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 0을 출력하고, 0을 리턴한다. fibonacci(2)는 fibonacci(1)과 fibonacci(0)의 결과를 얻고, 1을 리턴한다. 첫 번째 호출한 fibonacci(1)은 1을 출력하고, 1을 리턴한다. fibonacci(3)은 fibonacci(2)와 fibonacci(1..