Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 안동국시
- 부모님과
- 소호정본점
- 발산역 근처 카페
- CDJ
- 데이트
- 발산
- 카페
- 고양이는 언제나 귀엽다
- 냥스토리
- CodeJam 2017 Round 1B
- 냥냥
- 먹기좋은곳
- 파버스
- 파머스테이블
- 커플
- 발산맛집
- 치명적 귀여움
- 냥이
- codejam
- 스테이크
- 스코티쉬 스트레이트
- 양재맛집
- coffee
- RED CAT COFFEE X LOUNGE
- 스파게티
- 레스토랑
- 소호정
- 고양이
- A. Steed 2: Cruise Control
Archives
- Today
- Total
hubring
Non-Divisible Subset 본문
문제
https://www.hackerrank.com/challenges/non-divisible-subset/problem
Non-Divisible Subset | HackerRank
Find the size of the maximal non-divisible subset.
www.hackerrank.com
풀이
알고리즘적인 부분에서 어렵지 않으나 N의 크기로 시간복잡도를 생각해야했던 문제.
배열의 값과 상관없이 값을 나눈 나머지의 값은 K <100 이하이므로 이를 이용하여 풀 수 있었다.
코드
int nonDivisibleSubset(int k, vector<int> s) {
vector<int> extra(k+1, 0); //나머지
int result = 0;
int size = s.size();
for(int i=0; i<size; i++){
int e = s[i]%k;
extra[e]++;
}
//나누어떨어지는 수 하나만 포함 가능
if(extra[0]>0){
extra[0] = 1;
}
//중앙값은 하나만 포함 가능
if(k%2 == 0 && extra[k/2]>0){
extra[k/2] = 1;
}
for(int i=0; i<=(k/2); i++){
if(extra[i]>extra[k-i]){
result+=extra[i];
}else{
result+=extra[k-i];
}
}
cout<< result<<endl;
return result;
}
'Algorithm > hackerRank' 카테고리의 다른 글
Climbing the Leaderboard (0) | 2020.08.04 |
---|