본문 바로가기
반응형

백준알고리즘47

[백준] p9095 1, 2, 3 더하기 : 동적계획법 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 7 44 274 동적계획법은 문제를 작은 문제로 쪼개어, 작은 문제의 해답을 이용해 큰 문제를 해결하는 방법이다. '작은 문제들의.. 2021. 9. 14.
그리디 알고리즘 greedy 알고리즘은 매 결정 순간 비용이 적은 것을 선택하는 알고리즘이다. 그리디 알고리즘은 이전의 탐욕 선택이 이후 선택에 영향을 주지 않는 문제에서 자주 사용된다. (독립적) 왜냐, 최적해에 근사한 값일 뿐 최적해를 만족하지 못한다. A-B가 B-C경로에 영향주지 않음. 또, 전체 최적해가 부분 문제에 대해서도 최적해를 만족하는 문제에서 사용된다. A-B 와 B-C은 전체인 A-C최적해의 부분 문제가 되기 때문에 그리디 알고리즘을 적용하기 적절한 문제다. 그렇지만 속도가 매우 빨라 동적계획법과 그리디 알고리즘이 혼용되어 쓰이기도 한다. 이제 그리디 알고리즘 풀어야지... 참고한 블로그 st-lab.tistory.com/143 2021. 4. 26.
백준알고리즘:p9663 N-Queen 분류: 백트래킹 ▶문제 먼저 체스게임에서 퀸의 능력은 원하는 만큼 상하좌우 대각선으로 이동할 수 있다. (다만, 한 방향으로만 가야됨) N*N체스판에서 퀸 N개가 서로 공격하지 않도록 놓는 방법의 갯수를 출력해야 한다. 아래 사진처럼 퀸이 움직인다. 즉 체스말이 현재 있는 곳에서 갈 수 있는 모든 곳을 x표시하고, 다른 말이 있는게 가능한 곳에서 또 x표시하는 반복을 한다. ▶코드 //백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 package backtracking; import java.util.Scanner; public class p9663_1 { public static int N; public static int[] arr; public static int count; //가로줄 하.. 2021. 4. 9.
백준알고리즘:p18870 좌표압축 분류: 정렬 ▶문제 입력받은 숫자의 순위를 정해서, 입력받은 순서대로 순위를 나타내면 된다. ▶통과 못한 코드_시간초과 //백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 package sort; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; public class p18870 { //좌표정렬_시간초과 public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(.. 2021. 4. 8.
백준알고리즘:p10814 나이순 정렬 순서가 좀 바뀌었지만 풀긴 먼저 풀었었다. 여러 방식으로 풀어보느라 정리를 미뤄놨던 터라 분류: 정렬 ▶문제 ▶sort로 정렬 Comparator //백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 package sort; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; import java.util.StringTokenizer; public class p10814 { //나이순 정렬 public static void main(String[] args) throws IOExceptio.. 2021. 4. 8.
백준알고리즘: p15649~15652 N과 M(1, 2, 3, 4) 분류: 백트래킹 처음에 백트래킹도 생소하고 어떻게 접근해야될 지 몰라서 다른 사람들이 어떻게 풀었는지 설명을 좀 찾아봤다. st-lab.tistory.com/114?category=862595 이 글에서 많이 도움을 받았다. 나중에 잘 모르겠으면 다시 보기... 백트래킹 설명과 dfs와의 차이점 등을 알 수 있었다. ▶문제15649 ▶코드 //백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 package backtracking; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class p15649 { //1부터 N까지의 수로 M개 짜리 수열 모두 출력해라 publi.. 2021. 4. 8.
반응형