본문 바로가기

etc.

[백준 9095번][C] 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의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 풀이 n일 때의 값을 생각해보자 1, 2, 3의 수만 사용할 수 있고, 순서가 다른 방법을 독립적인 방법으로 친다는 것을 생각해야한다 무작정 하나씩 세기에는 알고리즘의 속도도, DP의 방법론도 맞지 않는 것 같다 그렇다면 이미 세어진 갯수에서 +1, +2, +3 을 뒤에다 붙이는 방법은 어떨까? dp[3] 1 1 1 2 1 1 2 3 일 때, dp[4] 1 1 1 +1 2 1 +1 1 2 +1 3 +1 임을 알.. 더보기
[Java] sort() 메소드 정렬하기 (Arrays, Collections, Comparable, Comparator) C에서의 정렬이라고 하면 C Code 카테고리에 있듯이 Bobble Sort, Merge Sort, Quick Sort 등을 메소드로 구현하여 사용할 수 있다 그렇다면 Java에서는 정렬을 어떻게 할까? 우선 가장 많이 사용하는 정렬방법은 java.util.Arrays 클래스의 sort() 메소드가 있다 (이는 dual pivot quicksort 알고리즘이 내장되어 있다고 한다) import java.util.Arrays; public class MyClass { public static void main(String args[]) { int[] arr1 = new int[] {4, 3, 5, 2, 1}; Arrays.sort(arr1); for(int num : arr1) System.out.prin.. 더보기
[백준 1463번][C] 1로 만들기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 풀이 /3 , /2를 한 수에서 1을 더한 값과, -1를 한 수에서 1을 더한 값 중에 더 작은 값을 dp 배열에 대입한다 코드 #include #include int N; int dp[1000001]; //i의 범위만큼 -> DP함수에서 dp[i+1]로 선언해도 좋음 int min3(int a, int b, int c) { if(a 더보기
[백준 1463번][Java] 1로 만들기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 풀이 1에서부터 N까지 올라가며 /3, /2,+1을 한 수에 +1값을 올리며 최솟값을 대입한다 코드 import java.io.*; import java.util.*; public class Main { public static int dp[] = new int[1000001]; //i의 범위만큼 -> find함수에서 i만큼만 선언해도 좋음 public static void main(String args[].. 더보기
[Java] 얕은 복사와 비교, 깊은 복사와 비교 (Objects, Arrays 클래스) 본문에 앞서, ==연산자와 equals() 메소드의 차이점을 짚고 가자 ==연산자는 피연산자가 값과 주소가 같은지 검사한다 String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); System.out.println(str1 == str2); //true System.out.println(str1 == str3); //false 그러나 equals() 메소드는 피연산자의 내용(값) 같은지를 검사한다 String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); System.out.println(str1.equals(str2)); //true System.out.. 더보기