티스토리 뷰
문제 링크
https://algospot.com/judge/problem/read/GRADUATION
algospot.com :: GRADUATION
졸업 학기 문제 정보 문제 1학년은 노는 게 남는 거란 선배의 말을 철석같이 믿고, 전공 과목은 다 수강철회하고 교양 과목은 다 F 받는 방탕한 1학년을 보냈던 태우는 이제 와서 자신의 행동을 후회하고 있습니다. 졸업 전에 채워야 할 학점이 너무 많기 때문입니다. 졸업 필수 학점을 채우려면 전공 과목 N 개 중 K 개 이상을 수강해야 합니다. 그런데 각 과목은 해당 과목의 선수과목을 미리 수강했어야만 수강할 수 있으며, 각 학기마다 모든 과목이 개설되는
algospot.com
졸업에 필요한 과목을 듣는데 다녀야 할 최소 학기를 구하는 문제입니다.
전공과목, 학기에 대한 정보가 주어졌을 때 이 값들을 비트 마스크를 사용하여 값을 저장하고 변경함으로써 실행 시간을 줄일 수 있습니다.
문제를 풀기전에 기본적으로 알아두면 좋은 비트 연산자와 비트마스크 입니다.
비트 연산자
코드 | 설명 | 예시 |
a & b | a, b의 AND 연산 | 4 & 2 = 100 & 010 = 000 |
a | b | a, b의 OR 연산 | 4 | 2 = 100 | 010 = 110 |
a ^ b | a, b의 XOR 연산 | 4 ^ 2 = 100 ^ 010 = 110 |
~a | a의 NOT 연산 | ~4 = ~100 = 011 |
a << b | a를 왼쪽으로 b비트 시프트 | 4 << 2 = 10000 |
a >> b | a를 오른쪽으로 b비트 시프트 | 4 >> 2 = 1 |
비트마스크
코드 | 설명 | 예시 |
a |= (1 << b) | 정수 a의 b번 비트를 켬 | 1000 |= (1 << 2) = 1100 |
if( a & (1 << b) ) |
정수 a의 b번 비트가 켜있는지 확인 (포함 시 1<<b, 아닐 시 0) |
1000 & (1 << 2) = 0 1000 & (1 << 3) = 8 |
a &= ~(1 << b) | 정수 a의 b번 비트를 끔 | 111 &= ~(1 << 0) = 110 |
a ^= (1 << b) | 정수 a의 b번 비트를 토글 | 111 ^= (1 << 1) = 101 |
(a & -a) |
a의 최소원소 반환 (10100 의 최소 원소 = 100 = 4) |
( 10100 & -10100) = 100 |
a &= (a-1) | a의 최소원소 지우기 | 10100 &= (10100 - 1) = 10000 |
주어지는 입력 값이 많아 헷갈리므로 각 입력 값들의 의미를 자세히 파악해야 합니다.
아래는 첫번째 테스트케이스에 사용되는 입력 값들입니다.
구현 코드
'Coding Test > 알고스팟' 카테고리의 다른 글
[C++] 알고스팟/분할정복 - 울타리 잘라내기 (0) | 2020.03.31 |
---|---|
[C++] 알고스팟/분할정복 - 쿼드 트리 뒤집기 (0) | 2020.03.30 |
[C++] 알고스팟/완전탐색 - Synchronizing Clocks (0) | 2020.01.18 |
[C++] 알고스팟/완전탐색 - 게임판 덮기 (0) | 2020.01.11 |
[C++] 알고스팟/완전탐색 - 소풍 (0) | 2020.01.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2225
- 배열과 문자열
- 알고스팟
- microwaving lunch boxes
- 백준
- 삼각형 위의 최대 경로
- 하이브
- pyspark
- 삼각형 위의 최대 경로 수 세기
- C++
- python
- Hadoop
- HDFS
- 합친 lis
- HiveQL
- 하둡
- 완전탐색
- import
- 출전 순서 정하기
- Sqoop
- 종만북
- 스파크
- Jaeha's Safe
- 팰린드롬 구하기
- hive
- 두니발 박사의 탈옥
- 분할정복
- 외발 뛰기
- Django
- 코딩인터뷰 완전분석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함