문제 설명
- each element of the sequence is either painted in one of k colors or isn't painted;
- each two elements which are painted in the same color are different (i. e. there's no two equal values painted in the same color);
- let's calculate for each of k colors the number of elements painted in the color — all calculated numbers must be equal;
- the total number of painted elements of the sequence is the maximum among all colorings of the sequence which meet the first three conditions.
n과 k가 주어지는데 n개의 숫자, 그리고 각 숫자는 k개를 초과하면 안된다
0을 제외하고는 1 ~ k개가 동일하게 카운팅 되어야한다
틀린 이유 :
어떻게 동일 숫자로 각 숫자들을 돌려야할까에서 막혔다.
풀이설명 :
- n개의 값을 받는다
- 해당 숫자들을 카운팅해준다 -> 0을 제외하고 동일하게 카운트하기 위해서다
- 해당숫자가 k개가 넘으면 안된다
- 헤아린 카운트가 k의 배수가 안되면 나머지 값을 전체에서 빼주면 된다
- 값을 배분해줄때 임의의 변수 kNum을 사용해서 1 ~ k를 배분할때 (kNum + 1) % k를 해주었다 그래야지 0이안된다
ex : k가 3이다 , kNum이 3일경우 %로 바로 하면 0이된다kNum = (kNum + 1)% k;
핵심 코드
for (int i = 0; i < m.size(); ++i) {
for (int j = 0; j < m[i].size(); j++) {
if (cnt == 0) break;
cnt--;
ans[m[i][j]] = kNum + 1;
kNum = (kNum + 1)% k;
}
}
'코드포스 > div3' 카테고리의 다른 글
B. Alphabetical Strings (0) | 2021.08.09 |
---|---|
A. Shortest Path with Obstacle (0) | 2021.08.09 |
B1.WonderfulColoring (2) | 2021.07.29 |