목록백준 (59)
알고리즘
1번 → 1부터 탐색을 시작해서 '6'이 연속으로 3개 들어가 있으면 카운팅하여 N번째 수를 찾는 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); //N번째 종말의 수를 찾기 위한 N을 입력받는다. int count = 0; //종말의 수 ..
1번 → 입력받은 M*N 체스판에서 8*8 공간만큼의 경우를 전수 조사해서 정상 체스판과 다른 부분 개수 찾기 8*8 공간이 겹치는 부분의 중복 계산을 피하는 방법이 있을까.. 하며 시간을 잡아먹었던 문제 (브루트포스 문제답게 완전 탐색으로 해결) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int min = -1; public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..
1번 → 2차원 배열을 이용해, 키∙몸무게를 모두 비교하여 덩치 순위를 출력하는 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //버퍼에서 데이터를 읽어오는 방식으로 속도가 빠르다. StringTokenizer st; int N = Integer.pa..
1번 → 입력받은 자연수까지 완전 탐색을 하면서 가장 작은 생성자를 구하는 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //버퍼에서 데이터를 읽어오는 방식으로 속도가 빠르다. int N = Integer.parseInt(br.readLine()); //자연수 N을 입력받는다. int result = 0; //..
브루트 포스(brute force) : '완전탐색 알고리즘', 가능한 모든 경우의 수를 모두 탐색하는 방법이다. BFS(너비 우선 탐색)은 브루트 포스와 관련이 깊고, DFS(깊이 우선 탐색)은 백트래킹과 관련이 깊다. 1번 → 주어진 카드로 만들 수 있는 조합을 전부 탐색하면서 min 값 찾는 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRead..
1번 → 이 또한 처음 걸음을 떼기 어려워, 아래 자료를 보고 이해한 후 코드를 짰다. 매우 자세히 설명을 해주셔서 초보자도 이해하는 데 무리가 없으리라 생각한다. https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다. shoark7.github.io import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { pu..
1번 → 어려웠다. 3*3 패턴을 만든 뒤 규칙에 따라 StringBuilder에 append 하려고 했는데, 개행 때문에 옆에 나란히 붙일 수는 없었다. 1시간동안 고민했지만, 해결 방법이 떠오르지 않아 아래 자료를 참고했다. - 규칙(5번째 인덱스마다 공백이다.) 을 찾고 function(탐색 시작 행 : row, 탐색 시작 열 : column, 탐색할 범위 : N, 공백 판단 T/F : false) 을 만드는 문제이다. 재귀를 풀 때, 함수로 만들 규칙을 정확히 찾고 그 규칙을 구현하는 연습이 필요할 것 같다. https://st-lab.tistory.com/95 [백준] 2447번 : 별 찍기 - 10 - JAVA [자바] st-lab.tistory.com import java.io.Buffere..
1번 → 병합 정렬 코드를 이해하고, K번째 저장되는 수를 출력하는 문제 어떻게 재귀 함수가 호출되고 실행되는지 정확히 이해하는데 아래 자료들의 도움을 받았다. https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html [알고리즘] 합병 정렬(merge sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io https://reakwon.tistory.com/38 [알고리즘] 병합 정렬 (Merge Sort) 기본 개념과 코드 구현, 설명 병합정렬 (Merge Sort) 기본 개념병합 정렬을 알기 전에 우선 Devide and Conquer에 관한 개념..