HackerRank Warming Up ์ด๋ณด ๋์ด๋์์๋ถํฐ ์์๋๋ก ์ญ-์ฑ ํ์ด๋ณด๊ธฐ
์์ฝ
Prepare/Algorithm/WarmUp
| ๋ฌธ์ ํ์ด | ํ๊ท ์์์๊ฐ | ๋์ด๋ | ์ฒด๊ฐ๋์ด๋ | ํด๊ฒฐ๋ชปํ๋ฌธ์ |
|---|---|---|---|---|
| 4๊ฐ | ์ฝ21๋ถ | easy | ์ต์ํด์ง | 1๊ฐ |
๊ฐ ๋ฌธ์ ๋ณ ํ์ด๋ฐฉ์ ์์ฝ
| ์๋ฒ | ๋ฌธ์ | ์๊ฐ | ํ์ด๋ฐฉ์ | ๋ค๋ฅธ์ฌ๋๋ค | ๋น๊ณ |
|---|---|---|---|---|---|
| 1 | Apple and Orange | 15๋ถ | for๋ฌธ + &&์กฐ๊ฑด | ๋์ผ | ๋ฒ์์กฐ๊ฑด ์ฌ์ฉ๋ถ๊ฐ |
| 2 | Number Line Jumps | 24๋ถ | while๋ฌธ + if์กฐ๊ฑด | if์กฐ๊ฑด์์์ while๋ฌธ | timeout์ค๋ฅ ์ฃผ์ |
| 3 | Between Two Sets | 30๋ถ ์ด๊ณผ | ๊ฐ๋ฐฐ์ด 2์คfor๋ฌธ | ์ ํด๋ฆฌ๋ํธ์ ๋ฒ |
๋ฌธ์ ํด์ ์ฃผ์ |
| 4 | Breaking the Records | 14๋ถ | for๋ฌธ + if์กฐ๊ฑด | ๋์ผ | ๊ฒฐ๊ณผ ์ถ๋ ฅ์์ ์ฃผ์ |
ํด๊ฒฐ๋ชปํ ๋ฌธ์
Between Two Sets
- ๊ณ์ฐ์ด ํ์ํ ์ ๋ฒ์ ์ ํํ ์๊ธฐ
These numbers are referred to as being between the two arrays.
๋ ๋ฐฐ์ด์ ์์๊น์ง ํฌํจ์ ๋ปํ๋ค (a๋ฐฐ์ด์ ๋ง์ง๋ง ์์๊ฐ ์ด์์ธ ์ค ์์๋ค) - ์กฐ๊ฑด๋ง์กฑ๊ณผ ์ง์ ์ง์ flag๋ก ๊ตฌ๋ถํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ํ์ถ์ง์ ์ค์ ์ ๋ชปํ๋ ์ค์๋ฅผ ์๋ฐฉํ ์ ์๋ค
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
์ต๋๊ณต์ฝ์(Great Common Divisor)๋ฅผ ๊ตฌํ๋ ํจ์๋ฅผ gcd(x,y)๋ผ ํ ๋,
x % y = 0 ์ด๋ฉด gcd(x,y) = y
y % x != 0 ์ด๋ฉด gcd(x,y) = gcd(x, x%y)๊ฐ ์ฑ๋ฆฝํ๋ค
๋ ๋ฐฐ์ด์ ๋ฒ์ ๋ด a๋ฐฐ์ด์ ๋ฐฐ์์ b๋ฐฐ์ด์ ์ฝ์๊ฐ ๋๋ ์ซ์์ ๊ฐฏ์ ๊ตฌํ๊ธฐ
๋ฐฐ์์ ์ฝ์ ์๊ธฐ์ธ์ค ๋ชจ๋ฅด๊ณ ๋ %๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ๋ณด๋ฉฐ ๋๋ฝ์ ๋น ์ ธ๋ฒ๋ฆฐ ์๊ฐ๋ค..
int getTotalX(vector<int> a, vector<int> b) {
int count = 0;
// ๋ฒ์๋ a๋ฐฐ์ด์ ์ต์์์๊ฐ ์ด์ b๋ฐฐ์ด์ ์ต์์์ ์ดํ
for(int i = a[0] ; i<= b[0]; i++) {
// ๋๋ฒ์งธ for๋ฌธ ์ง์
์กฐ๊ฑด flag
bool isTrue = true;
// b๋ฐฐ์ด ์์์ ์ฝ์๊ฐ ๋๋ ์ ๊ตฌํ๊ณ ์กฐ๊ฑด๋ถํฉ ์ ๋ค์ if๋ฌธ ์ง์
๋ถ๊ฐ
for(int elm : b ){
if(elm % i != 0){
isTrue = false;
break;
}
}
// b๋ฐฐ์ด ์์์ ์ฝ์์กฐ๊ฑด ๋ง์กฑ๋ ์๋ง ์ง์
if(isTrue){
// ์ต์ด ์นด์ดํธ ์กฐ๊ฑด flag
bool isCount = true;
// a๋ฐฐ์ด์ ๋ฐฐ์ ์กฐ๊ฑด ๋ง์กฑ ์ ํ์ถ
for(int elm : a){
if(i % elm != 0){
isCount = false;
break;
}
}
// ์ต์ข
์นด์ดํธ ์ณ
if(isCount)
count++;
}
}
return count;
}