목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net -문제해설 그냥 조합을 구하면 되는 문제이다. n개 중에서 순서에 상관없이 k개를 뽑을 경우의 수. 수학적으로 조합 식에 해당되는 분자를 구하고 조합 식에 해당되는 분모를 구한 뒤 두 개를 나눠도 되지만 예전에 조합을 다이나믹프로그래밍을 이용해서 구한 적이 있어서 dp로 풀었다. 1C0 =1 1C1 =1 2C0 =1 2C1 =2 2C2 =1 3C0 =1 3C1 =3 3C2 =3 3C3 =1 4C0 =1 4C1 =4 4C2 =6 4C3 =4 4C4 =1 5C0 =1 5C1 ..
https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net -문제해설 처음에 반복문으로 풀었는데 숫자가 커질 경우 시간초과가 나왔다... 그래서 수학적인 코드로 바꿨는데도 25퍼정도 지나가면 시간초과가 나왔다. 원래 BufferedWriter쓰는게 더 빠른 줄 알았는데 입력받을 때만 BufferedReader쓰고 출력할 때는 System.out.println() 쓰니깐 시간초과가 안나왔다 여태까지 출력은 맨날 BufferedWriter썼는데 앞으로 쓰지 말아야겠다 ㅎㅎ 수학식을 생각하기 위해 여러가지 테스트케이스..
https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net -문제해설 숫자로 입력받지 않고 문자열n으로 입력받은 다음에 반복문을 0부터 n/2까지 순회하면서 양 끝값을 비교한다. n.charAt( i )와 n.charAt( n.length()-i-1 ) 다르면 ans라는 변수를 "no"로 초기화시키고 반복문을 빠져나온다. 같은 경우 ans 값을 그대로 출력한다. ans의 맨 처음 초기값은 "yes"이다. -자바 package string; import java.io.Bu..
https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net -문제해설 l로 문자열 길이를 입력받고 다음 줄에 문자열을 입력받는다. 이때 a=1, b=2, c=3, d=4, ... ,z=26이다. 만약 주어진 문자열이 abcde라면 해당 문자열의 해시값을 얻는 방법은 1*31^0 + 2*31^1 + 3*31^2 + 4*31^3 + 5*31^4 가 되는데 만약 문자열의 길이가 5보다 크고 50이하이면 값이 너무 커지므로 매번 계산할 때마다 m값으로 나머지를..