HackerRank Warming Up ์ด๋ณด ๋์ด๋์์๋ถํฐ ์์๋๋ก ์ญ-์ฑ ํ์ด๋ณด๊ธฐ
์์ฝ
Prepare/Algorithm/WarmUp
| ๋ฌธ์ ํ์ด | ํ๊ท ์์์๊ฐ | ๋์ด๋ | ์ฒด๊ฐ๋์ด๋ | ํด๊ฒฐ๋ชปํ๋ฌธ์ |
|---|---|---|---|---|
| 7๊ฐ | ์ฝ20๋ถ | easy | ์ง๋ฌธ์ด ๊ธธ์ด์ง๊ณ ์ค์๊ฐ๋ง์์ง | 3๊ฐ |
๊ฐ ๋ฌธ์ ๋ณ ํ์ด๋ฐฉ์ ์์ฝ
| ์๋ฒ | ๋ฌธ์ | ์๊ฐ | ํ์ด๋ฐฉ์ | ๋ค๋ฅธ์ฌ๋๋ค | ๋น๊ณ |
|---|---|---|---|---|---|
| 1 | Subarray Division | 19๋ถ | 2์คfor๋ฌธ | ย | ย |
| 2 | Divisible Sum Pairs | 8๋ถ | 2์คfor๋ฌธ๊ณผ &&์กฐ๊ฑด | ย | ์กฐ๊ฑด์ ์ ์ฝ์ |
| 3 | Migratory Birds | 30๋ถ์ด๊ณผ | sort() |
id๋น ๊ฐฏ์ ๋ฒกํฐ | ์์ธ์ํฉ ์ฃผ์ํ๊ธฐ |
| 4 | Day of Programmer | 30๋ถ์ด๊ณผ | if ์๋ฉ! | ๋์ผ | ์ฝ์ง๋ง ๊ธด๋ฌธ์ |
| 5 | Bill Division | 12๋ถ | ๋์ ๋ง์ ๊ณผ if | ๋์ผ | ย |
| 6 | Sales by Match | ๊ฒ์ | ย | ํด์ฌ๋งต,๋ฉ๋ชจ์ด์ ์ด์ | ๋ฐฐ์ ๋ค! |
| 7 | Drawing Book | 9๋ถ | ์ง์๊ณ์ฐ | minํจ์ | ๋ง์ง๋งํ์ด์ง ์ฃผ์! |
ํด๊ฒฐ๋ชปํ ๋ฌธ์
Migratory Birds
- ๋ง์ง๋ง ์์๊น์ง ์ ๊ฒฝ์ฐ๊ธฐ
sort()๋ฅผ ์งํํ๋ฉฐ ๋น๊ต์ ๋น ๋ฅด๊ฒ ํจ์๋ฅผ ๋ง๋ค์ด๋์ง๋ง,
๋ด๊ฐ ๋ง๋ ์์์์ ์์ธ ์ ์ฉํด์ผํ๋ ๋ถ๋ถ์ ์๊ฐํ์ง ๋ชปํด ํ๋ฆฐ ๋ฌธ์
์๊ฐ๋ณด๋ค ํจ์ฌ ํฌ๊ณ ๋ง์ ์ซ์๋ค๋ก ํ
์คํธํด๋ ์ ์ ์๋ํด์ผํ๋ค๋ ๊ฒ์ ๋ค์๊ธ ๊นจ๋ฌ์๋ค
int migratoryBirds(vector<int> arr) {
// sort๋ก id์ ์ ๋ ฌ
sort(arr.begin(),arr.end());
int check = 1; // id๋น ๊ฐฏ์ ์นด์ดํธ
int comp = 1; // ์ด์ ์ต๋์์ ๋น๊ต
int id = 0; // ์ต๋์๋ฅผ ๊ฐ์ง id > ๋ฐํ
for(int i =1; i<arr.size(); i++)
{
// ์์๊ฐ ๋ฐ๋์๋ค๋ฉด ํด๋น id์ ์นด์ดํธ๊ฐ ๋๋ฌ๋ค๋ ๋ป์ด๊ณ ,
// ์ง์ ์ต๋ ๊ฐฏ์์ ๋น๊ต๋ฅผ ์งํํ ์ ์๋ค.
// ๋จ, ๋ง์ง๋ง id์ธ 5๋ ๋ง์ง๋ง ์์์ ๋๋ฌํ์ ๋ ๋น๊ต
if(arr[i] != arr[i-1] || i == arr.size()-1)
{
if(check > comp)
{
id = arr[i-1];
comp = check;
}
check = 1;
}
check++;
}
return id;
}
Day of the Programmer
- ๋ ์ง๊ณ์ฐ์ ์ด๋ ต๊ฒ ์์์ฐ์ง๋ง๊ณ ์์๊ฐ์ผ๋ก ์ฝ๊ฒ ๊ณ์ฐํ ๋ฐฉ๋ฒ์ ๋จผ์ ์ฐพ์
string dayOfProgrammer(int year) {
bool leap = false;
bool julian = false;
if(year < 1918)
julian = true;
if(julian && year % 4 == 0)
leap = true;
if(!julian && year % 400 == 0)
leap = true;
if(!julian && year % 4 == 0 && year % 100 != 0)
leap = true;
if(year == 1918){
return "26.09.1918";
}
if(leap){
return "12.09."+to_string(year);
}
else{
return "13.09."+to_string(year);
}
}
Sales by Match
- ํด์ฌ๋งต ํ์ฉํ๊ธฐ ์ข์ ์์!
- ๋ฉ๋ชจ์ด์ ์ด์ ํ์ฉ ์ฌ๋ก๋ ํจ๊ป ๋ณด๊ธฐ
๋จ์ํ ํ๋ํ๋ ์ง์๋๊ฐ๋ ๋ฐฉ์์ ์ฐ๋๊ฑด ๋นํจ์จ์ ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ ์ด๋ค stl์ ์ฌ์ฉํ๋ ์๊ณ ์ถ์ด ๋ต๋ถํฐ ๊ฒ์ํด๋ดค๋ค.
// ๋งต ํ์ฉ
int sockMerchant(int n, vector<int> ar) {
map<int,int> map;
for(size_t i = 0; i<n; i++){
if(map.find(ar[i]) != map.end())
{
map[ar[i]]++;
}
else{
map.insert(make_pair(ar[i],1));
}
}
int answer = 0;
for(auto iter: map){
answer += iter.second / 2; // ์์ซ์ ์ ๋ฒ๋ฆฐ ๊ฐ๋ง ๊ณ์ฐ๋๋ค
cout << iter.second << '\n';
}
return answer;
}
// ๋ฉ๋ชจ์ด์ ์ด์
int sockMerchant(int n, vector<int> ar) {
int temp[101] = {}; // ์๋ง์ 101๊ฐ์ง
for(size_t i = 0; i< ar.size(); i++){
temp[ar[i]]++;
}
int answer = 0;
for(auto iter : temp){
answer += iter /2;
}
return answer;
}