알고리즘(Algorithm)의 종류, 분류/여러 가지 기법 5

[JAVA]백준 2531번: 회전 초밥

https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net | 문제 해결방법 ⭐Idea : 투 포인터 처음에 투 포인터를 사용하는 문제인 건 알았는데, 큐를 사용해서 시간이 꽤 오래 걸렸다. | 시간 문제 시간을 좀 단축하고 싶어서 구글링으로 방법을 찾아보았는데, 참고 링크 : https://buddev.tistory.com/43 이 글쓴이 분의 코드가 굉장히 짧고 간결해서 이 방법을 사용한 후 시간을 약 6분에 1..

[JAVA]백준 1806번: 부분합

https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net | 문제 해결방법 ⭐Idea : 투 포인터 알고리즘 여기서 매번 값을 계산하기 위해 for문을 사용하면 시간초과 난다. 총 합에서 다음 요소를 더해주거나 맨앞의 요소를 빼주는 방법으로 접근. 유사한 문제 : 백준 2003 수들의 합2 (https://www.acmicpc.net/problem/2003) [JAVA] 해설 코드 package week11; import java.io.B..

[JAVA]백준 2003번: 수들의 합 2

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net | 문제 해결방법 ⭐Idea : 투 포인터 알고리즘 [JAVA] 해설 코드 package week11; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BO..

[JAVA]백준 1182번: 부분수열의 합

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 비트마스킹에 대한 글을 포스팅 한 후 금방 터득한 생생한 지식으로 바로 풀어보았다✨ | 문제 해결방법 부분집합 구하는 공식 + 비트마스킹 부분집합을 구할 때 1. boolean배열을 사용할 수도 있고 2. 비트마스킹 기법을 사용할 수도 있다. 이번 문제에서는 비트마스킹 기법을 사용하였고, 이 기법은 비트단위로 정보를 처리하기 때문에 메모리를 적게 사용할 뿐만 아..

[JAVA] 비트마스킹(Bit Mask) 이해하기

목차 1. 비트마스크란? 2. 비트마스크의 예시 3. 비트 연산자 | 비트마스크(Bit Mast)란? 비트마스크는 알고리즘이 아닌 하나의 기법으로 정수를 이진수로 표현하고, 비트연산으로 다양한 문제를 해결해나가는 방법이다. | 비트마스크 예시 예를 들어 열쇠가 a , b , c , d , e , f로 6개가 있다고 가정한다. 이때, 가지고 있는 열쇠가 a , c , e 일때, 위와 같이 표현할 수 있다. 이 예시에서는 열쇠를 가지고 있는 경우/가지고 있지 않은 경우(1/0) 를 비트마스크로 표현하였는데, 이 경우 이외에도 스위치를 켜거나 끄는 경우, 해당 위치에 방문했거나 아직 방문하지 않는 경우 등 더욱 다양한 상황에서도 적용이 가능하다. 여기서 알 수 있는 점은 비트마스크는 이진수를 이용하여 두 가지..