Algorithm
-
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 이 문제도 전에 풀었던 이항 계수 1, nCr 을 구하는 풀이와 같다. 이번에도 동적계획법 DP 를 이용하여 풀이를 구했다. 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { s..
(JAVA) 백준 1010번 : 다리 놓기https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 이 문제도 전에 풀었던 이항 계수 1, nCr 을 구하는 풀이와 같다. 이번에도 동적계획법 DP 를 이용하여 풀이를 구했다. 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { s..
2022.11.14 -
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net nCr 을 구하는 문제인데 첫 풀이로 노가다 방식으로 진행해봤다. 이번 문제와 같이 수의 범위가 크지 않다면 문제가 없지만 비효율적이고 코드도 예쁘지 않다고 생각하여 총 3가지 풀이로 진행해봤다. 가장 기본적인 풀이 (row) import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Arrays; import java.util.Stri..
(JAVA) 백준 11050번 : 이항 계수 1https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net nCr 을 구하는 문제인데 첫 풀이로 노가다 방식으로 진행해봤다. 이번 문제와 같이 수의 범위가 크지 않다면 문제가 없지만 비효율적이고 코드도 예쁘지 않다고 생각하여 총 3가지 풀이로 진행해봤다. 가장 기본적인 풀이 (row) import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Arrays; import java.util.Stri..
2022.11.14 -
https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 서로 다른 부분 문자열의 갯수를 구하는 문제이다 보니 중복 제거가 필요하다 생각하여 HashSet 을 사용해야 한다고 생각했다. 또한 부분 문자열이 필요하니 String.subString() 을 사용했다. 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.HashSet; public class Main { pub..
(JAVA) 백준 11478번 : 서로 다른 부분 문자열의 개수https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 서로 다른 부분 문자열의 갯수를 구하는 문제이다 보니 중복 제거가 필요하다 생각하여 HashSet 을 사용해야 한다고 생각했다. 또한 부분 문자열이 필요하니 String.subString() 을 사용했다. 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.HashSet; public class Main { pub..
2022.11.11 -
https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net Counting 정렬로 풀이를 시도했으나 런타임 에러 (ArrayIndexOutOfBounds) 가 발생하여 추가적인 풀이를 고민했다. 근본적으로 문제를 생각했을 때 둘의 교집합을 구하고 [A집합 - 교집합] + [B집합 - 교집합] 을 구하면 된다는 결론이 나왔다. 즉, A집합 + B집합 - 교집합 X 2 를 해주면 된다. 교집합을 구하는 방식은 HashMap의 containsKey를 사용..
(JAVA) 백준 1269번 : 대칭 차집합https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net Counting 정렬로 풀이를 시도했으나 런타임 에러 (ArrayIndexOutOfBounds) 가 발생하여 추가적인 풀이를 고민했다. 근본적으로 문제를 생각했을 때 둘의 교집합을 구하고 [A집합 - 교집합] + [B집합 - 교집합] 을 구하면 된다는 결론이 나왔다. 즉, A집합 + B집합 - 교집합 X 2 를 해주면 된다. 교집합을 구하는 방식은 HashMap의 containsKey를 사용..
2022.11.10 -
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제를 읽고 HashMap 과 Counting 정렬을 사용하고자 했지만 범위가 너무 넓어 HashMap 을 먼저 사용하고 Counting 을 후에 진행하여 진행했다. HashMap - 기존의 값을 확인하는 기능이 필요하여 getOrDefault 를 사용하였다. import java.io.BufferedReader; import java.io.InputStreamR..
(JAVA) 백준 10816번 : 숫자 카드 2https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제를 읽고 HashMap 과 Counting 정렬을 사용하고자 했지만 범위가 너무 넓어 HashMap 을 먼저 사용하고 Counting 을 후에 진행하여 진행했다. HashMap - 기존의 값을 확인하는 기능이 필요하여 getOrDefault 를 사용하였다. import java.io.BufferedReader; import java.io.InputStreamR..
2022.11.10 -
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 문제를 읽고 떠오른 생각은 입력 값을 배열에 넣고 M에 대한 입력 값을 정규식으로 Integer 과 String 판별을 진행하면 되겠다! 그렇게 하기 위해서 HashMap과 arr 에 값을 입력하고 정규식으로 matches() 를 사용하였다. 정규식 사용 예시 코드 // 숫자를 찾기 위한 정규식 String REGEX = "[0-9]+"; String str = br...
(JAVA) 백준 1620번 : 나는야 포켓몬 마스터 이다솜https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 문제를 읽고 떠오른 생각은 입력 값을 배열에 넣고 M에 대한 입력 값을 정규식으로 Integer 과 String 판별을 진행하면 되겠다! 그렇게 하기 위해서 HashMap과 arr 에 값을 입력하고 정규식으로 matches() 를 사용하였다. 정규식 사용 예시 코드 // 숫자를 찾기 위한 정규식 String REGEX = "[0-9]+"; String str = br...
2022.11.07