본문 바로가기

전체 글533

[알고리즘] 줄 세우기 (백준 2252번) 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이�� www.acmicpc.net N, M의 크기만 봐도 알 수 있지만 그래프 완전탐색 문제이며 N은 정점, M은 간선의 수를 나타낸다. 정확히는 위상 정렬 문제다. 각 노드보다 앞서 있는 노드들이 먼저 출력되어야 하는 형태를 가진다. Solution import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStre.. 2020. 9. 28.
[코틀린] 비트 연산자 비트 연산자 코틀린의 비트 연산자는 자바와 다르게 문자열로 이루어져 있다. 비트 연산자 예시 설명 shl 1 shl 3 - 1을 3칸 왼쪽으로 밀어준다. - 자바 : - 중위 함수 ushr 10 ushr 2 - 10을 2칸 오른쪽으로 밀어준다 - 부호가 없다. - 중위 함수 and 7 and 1 - 7과 1을 논리곱 연산한다. - 자바 : & - 중위 함수 or 6 or 3 - 6과 3을 논리합 연산한다. - 자바 : | - 중위 함수 xor 2 xor 5 - 2와 5를 베타적 논리합 연산한다. - 자바 : ^ - 중위 함수 inv 12.inv() - 12를 not 연산한다. - 자바 : ~ 2020. 9. 28.
[알고리즘] 집합 (백준 11723번) 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 가장 기본적인 비트마스크 문제다. 총 M의 크기가 최대 3백만이고 메모리 허용량이 4MB 밖에 되지 않기에 비트마스크를 필히 활용해야 한다. Solution 비트마스크 연산 방법대로 분기해서 처리했는데도 시간초과가 나서 당황했는데 자바의 bufferedReader와 bufferedWriter를 써주지 않아서 그랬다. 참고로 all 연산은 1~20까지의 수를 추가하는 것인데 이는 (0~20) = SET의 21 추가후 - 1 (1~20) = SET에서 - 1 이기에 최종적으로는 SET에 21을 추가후 .. 2020. 9. 28.
[알고리즘] 비트마스크 (BitMask) 비트마스크 (BitMask) 정수로 집합을 나타낼 수 있는 기법 비트마스크를 사용하는 이유 완전 탐색 시 재귀호출 없이 모든 경우를 살펴볼 수 있다. (브루트 포스) 집합을 배열의 인덱스로 표현 가능하다. → 메모리 절약 가능 상태가 다이나믹한 경우에 자주 사용한다. 연산 1. 포함 검사 '&' 사용 집합 S에 i가 포함되었는지 검사 : S & (1 2020. 9. 28.