본문 바로가기

TIL/Java 알고리즘 문제 풀이12

23.07.30 오늘은 백트래킹에 대해 알아보자. 백트래킹은 한국어로 퇴각검색이라고 하는데, 문제를 풀기위한 풀이를 이어나가다가 그 길이 답이 아닐 것 같으면 되돌아 가는 방식을 말한다. 이는 가지치기라고도 부르는데, 이 편이 이해하기 쉬울 듯 하다. 가지치기를 얼마나 잘하느냐가 효율성을 결정한다. 문제를 한 번 풀어보자. https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선.. 2023. 7. 30.
23.07.07 이번에는 백준에서 유형별로 풀어보자 해서 백준을 풀어보았다. 코드는 완성을 했으나 무엇이 문제인지 계속해서 런타임 에러가 발생했다. 백준은 어디가 문제인지, 따로 규격도 정해지지 않아서 더욱 어려웠다. public class Main { public static void main(String[] args) throws Exception { new Main().solution(); exit(0); } public void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.p.. 2023. 7. 7.
23.07.01 프로그래머스 교점에 별 만들기 일단 교점의 좌표를 먼저 구하기로 했다. public List getDots(int[][] line) { // 교점을 구하는 메서드 생성 List dots = new ArrayList(); // 교점의 모임 리스트 for (int i = 0; i i; j--) { // 끝에서부터 n, n-1, n-2, ... 비교 int c = line[j].. 2023. 7. 1.
23.06.29 n의 배수 구하기 public int[] solution(int n, int[] numList) { ArrayList nums = new ArrayList(); for (int num : numList) { if (num%n == 0) { nums.add(num); } } int[] answer = new int[nums.size()]; for (int i = 0; i < nums.size(); i++) { answer[i] = nums.get(i); } return answer; } 2차원 배열로 만들기 public int[][] solution(int[] num_list, int n) { int size = num_list.length; int[][] answer = new int[size/n][n].. 2023. 6. 29.