본문 바로가기

자바173

[Java] BOJ 2156번 포도주 시식 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 풀이 DP를 사용해서 해결했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static int N; // 주의!! // 만약 N이 1일 경우 DP를 할때에 memo배열이 1만 생기기때문에 memo[2] 부분에서 오류가 생긴다... public static int[] arr = new i.. 2021. 4. 2.
[Java] BOJ 2193번 이친수 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이 DP를 이용해서 해결했습니다. 문제의 조건에서 이친수의 맨 앞에는 0이 올 수 없으므로 각 자릿수 별 이친수의 개수를 보면 한자리 = 1 → 1개 두자리 = 10 → 1개 세 자리 = 100, 101 → 2개 네 자리 = 1000, 1001, 1010 → 3개 다섯 자리 = 10000 10001 10010 10100 10101 →5개 ... N자리 = N - 1자리의 개수 + N - 2자리의 개수가 됩니다. 코드 import java.io.Buf.. 2021. 4. 1.
[Java] BOJ 1932번 정수 삼각형 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 문제의 조건에 있는 "아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다."를 DP에 적용하여 해결했습니다. 이때, i - 1을 할 경우 i가 0보다 작아질 수 있으니 이를 방지하기위해 배열의 크기를 [N + 1][N + 1]로 만들어 [1][1] 부터 수를 채우게했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.ut.. 2021. 3. 31.
[Java] 문자열을 한 글자씩 자르고 다시 합치기 String의 split()과 join()을 사용합니다. input_s = "gfedcba"; // 한 글자씩 자른다 String[] arr = input_s.split(""); /* arr = {"g", "f", "e", "d", "c", "b", "a"} */ // 사전순으로 정렬한다. Arrays.sort(arr); /* arr = {"a", "b", "c", "d", "e", "f", "g"} */ // 다시 문자열로 합친다. String str = String.join("", arr); /* str = "abcdefg" */ 2021. 3. 30.
[Java] SWEA 4672번 수진이의 팰린드롬 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문제 예시에서 세 번째 테스트 케이스를 abccba로 바꾸면 팰린드롬인 부분 문자열의 개수가 최대인데 이때의 부분 문자열 중 팰린드롬인 것은 a, a, b, b, c, c, aa, bb, cc이고 이는 aabbcc인 문자열의 연속한 부분을 뽑아 만든 부분 문자열이 됩니다. 이를 이용해서 입력받은 문자열을 사전 순으로 정렬하기 위해 한 글자씩 잘라 배열을 만들고 배열을 정렬한 후 다시 문자열로 합쳐주었습니다. 그다음으로 부분집합을 만들어 연속된 일부분을 뽑아 만든 부분 문자열을 만들고 그 부분 문자열이 팰린드롬이라면 팰린드롬의 개수를 증가시켜 해결했습니다. 코.. 2021. 3. 30.
[Java] SWEA 8659번 GCD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 DP를 사용해서 해결했습니다. 문제에서 A가 가장 작으며 그런 조합이 여러 가지인 경우 B가 가장 작은 조합을 선택하면 된다는 조건이 있고 GCD(a, b)일 때,테스트 케이스에서 주어진 K = 1부터 해보면 K = 1 GCD(2, 1) = GCD(1, 2 % 1) = GCD(1, 0) = 1 K = 2 GCD(3, 2) = GCD(2, 3 % 2) = GCD(2, 1) = (K = 1)인 경우가 반복 K = 3 GCD(5, 3) = GCD(3, 5 % 3) = GCD(3, 2) = (K = 2)인 경우가 반복 ... K = n GCD((n - 1의 a) +.. 2021. 3. 29.