본문 바로가기

알고리즘구현능력

(80)
[java] 백준/ 9095 1, 2, 3 더하기 이문제는 다이나믹 프로그래밍으로 분류되는 문제다. 1. ...............................+1 =n 인 경우 2. ...............................+2 =n 인 경우 3. ..............................+3 =n 인 경우 d[n]=d[n-1]+d[n-2]+d[n-3] 이렇게 된다. d[0]+d[1]+d[2] 만 따로 구하고 그뒤에는 for문 돌리면 끝난다. d[n] -> n이 될떄까지의 갯수
[java] 백준/1463 1로 만들기 이 문제는 다이나믹으로 분류되어 있는 문제다. 3가지의 경우가 있다 첫번째 경우 d[n] = d[n/3]+1 3으로 나누어 떨어지는 경우 n%3==0 두번쨰경우. d[n] = d[n/2]+1 2로 나누어 떨어지는 경우 n%2 ==0 세번째경우 d[n] = d[n-1]+1 그 외 세개중에 가장 적은 값으로 저장하도록 코딩을 하면 된다.
[java] 백준/2579 계단오르기문제 이 문제의 유형은 다이나믹프로그래밍이다. 다이나믹프로그래밍 문제를 풀때는 규칙을 찾아야하는데 ... 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 세가지 규칙으로 보면 결국 한칸씩 두번을 이동못한다는 얘기다. 1차원 배열과 2차원 배열 두가지로 풀수 있는데 이건 문제푸는 스타일에 맞춰서 푸시면된다. 마지막 도착 계단은 반드시 밟아야 한다...를 인용하면 dp[n] = dp[n-2] + stair[n] or dp[n-3]+stair[n-1]+stair[n] 이렇게 된다. dp[n-2]..
[java] 백준/2775 java 123456789101112131415161718192021222324252627282930import java.io.BufferedReader;import java.io.InputStreamReader; public class Backjun2775 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int count = Integer.parseInt(br.readLine()); int arr[][] = new int [15][15]; for..
백준/1011 java 1234567891011121314151617181920 import java.io.BufferedReader;import java.io.InputStreamReader; public class Backjun1011two { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(reader.readLine()); StringBuilder builder = new StringBuilder(); for(int i=0 ; i
배경지식 성장을 위해서 기초적인 프로그래밍 문법 과 알고리즘 자료구조 등을 아는것.
문제해결능력을 위하여 문제해결능력을 향상하기 위한 방법1. 양질의 문제를 푸는 것 2. 풀어본 문제들을 다양항 방법으로 잘 정리해두는 것3. 노력이 필요하다..
구현력 향상을 위하여 구현력 향상을 위해서 해야할 것1. 내가 어떤 프로그래밈을 만들고자 하는지 명확하게2. 무엇을 입력받아 어디에 저장하고 어떤 과장을 거쳐서 중간 결과로 무엇을 얻고 최종적으로 이런 결과물을 이러헥 출력한다. 와같은 순서도를 그린다. 천천히 적으면서도 순서도를 명확히 그리는 연습을 자주하기.