일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- mpnp
- EOI
- 조지아텍
- 매트랩
- 코딩테스트
- 방통대
- MATLAB
- 컴퓨터과학과
- 위니펙
- 온라인석사
- 캐나다 영주권
- 선형대수
- leetcode
- 주정부이민
- 머신러닝
- C++
- Deep learning
- omscs
- LV1
- zeros
- Plotting
- 방송통신대학교
- 기본
- 알고리즘
- 프로그래머스
- machine learning
- cpp
- 딥러닝
- 개발자
- LAA
Archives
- Today
- Total
Byte by Byte
1356. Sort Integers by The Number of 1 Bits.cpp 본문


🔑 제한사항에서 arr원소 최대값이 10000이하 이므로, 2^14를 넘지 않는다. 따라서, 2진법 전환시에, 1의 개수도 14개 이하이다. 고로, 각 숫자의 루프를 돌면서, 1의 개수에 따라 분류하는 2차원 벡터 14개를 만든다. 저장한 후에, 순서대로 res에 넣어 주면 끝이다. (단, 1의 개수가 같은 경우에 오름차순을 지정해야하므로, sort한 이후에 res에 넣는다.)
⭐2차원 벡터 초기화 방법
vector<vector<int>>v(2차원 벡터(row) 원소 개수,vector<int>(1차원 벡터(column) 원소 개수,0));
class Solution {
public:
vector<int> sortByBits(vector<int>& arr) {
vector<int>res;
vector<vector<int>>v(14,vector<int>(0));
for(int i =0; i<arr.size(); i++){
int cnt =0;
int tmp = arr[i];
while(tmp!=0){
if((tmp%2)==1) cnt++;
tmp/=2;
}
v[cnt].push_back(arr[i]);
}
for(int i =0; i< v.size(); i++){
for(int j =0; j< v[i].size(); j++){
sort(v[i].begin(),v[i].end());
res.push_back(v[i][j]);
}
}
return res;
}
};
'개발 로그 > 알고리즘' 카테고리의 다른 글
1030. Matrix Cells in Distance Order.cpp (0) | 2021.11.19 |
---|---|
821. Shortest Distance to a Character.cpp (0) | 2021.11.16 |
1337. The K Weakest Rows in a Matrix.cpp (0) | 2021.10.30 |
1935. Maximum Number of Words You Can Type.cpp (0) | 2021.10.27 |
1207. Unique Number of Occurrences.cpp (0) | 2021.10.25 |