1. ๋ฌธ์ ์ค๋ช ๐
(1) ๋งํฌ๐
(2) ํด์ค๐ต
KEY WORD
: Bit ์ฐ์ฐ
๊ฐ๋ฐ์์ ์ ๋ณด(DEVELOPERS
)์ ๊ฐ๋ฐ ์ธ์ด์ ์คํฌ ์ฝ๋(SKILLCODES
)๊ฐ ์ ํ ๋ ํ
์ด๋ธ์ด ์กด์ฌํ๋ค.DEVELOPERS
์์๋ ๊ฐ๋ฐ์๊ฐ ์ฐ๋ ์ธ์ด์ ๋ํด SKILL_CODE๋ผ๋ ์ปฌ๋ผ์ผ๋ก ๋ํ๋ด๋๋ฐ, ์ด ์ฝ๋์ INTEGER ๊ฐ์ 2์ง์ ๋นํธ๋ก ๋ํ๋์ ๋, 2์ง์ ์๋ฆฟ๊ฐ ํ๋๋น ํด๋น ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋ ์ธ์ด CODE์ ๊ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ๊ฐ๋ฐ์ B์ SKILL_CODE
์ปฌ๋ผ์ ๊ฐ์ด 400์ด๋ผ ํด๋ณด์. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ธ์ด์ SKILLCODES ํ
์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ํด๋ณด์.
NAME | CATEGORY | CODE |
---|---|---|
C++ | Back End | 4 |
JavaScript | Front End | 16 |
Java | Back End | 128 |
Python | Back End | 256 |
B์ SKILL_CODE
๊ฐ์ 2์ง์๋ก ํํํด๋ณด๋ฉด, (b'110010000')์ด๋ค. ์ฆ B๋ ์ฝ๋๊ฐ 256(=b'100000000')์ธ Python๊ณผ 128(=b'10000000')์ธ Java, 16(=b'10000')์ธ JavaScript๋ฅผ ์ธ ์ ์๋ค๋ ๊ฒ์ด๋ค.
2. ์๊ฐ์ ํ๋ฆ
์ด๊ฑธ ์ด๋ป๊ฒ ๊ตฌํด์ผ ํ ๊น?
MySQL์์ ์ฐ๋ ๊ฒ์ ์กฐ๊ธ ์ด์ํ์ง๋ง ๋นํธ ์ฐ์ฐ์๋ฅผ ํ์ฉํด์ผ ํ๋ค.&
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ ๋ค ํน์ ์๋ฆฟ๊ฐ์ ๊ฐ์ด 1์ผ ๋๋ง 1๋ก ๋์จ๋ค.
๋ฌธ์ ํ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ง๋ค.
- Where๋ฌธ์ผ๋ก ๋ฌธ์ ์์ ์ํ๋ ์กฐ๊ฑด์ธ 'C#'๊ณผ 'Python'์ ๋ํ ์ฝ๋๋ก
SKILLCODES
ํ ์ด๋ธ์ ์ถ๋ฆฐ๋ค. - ๋ชจ๋ ๊ฐ๋ฐ์์ ๋ํด C#๊ณผ Python ์ฝ๋์ ๋นํธ ์ฐ์ฐ์ ํ๋ค. (์นดํฐ์์ ๊ณฑ ($O(N*2)$))
- ๋นํธ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ 0๋ณด๋ค ํฐ ํ ์ด๋ธ๋ง ์ด๋ ค๋๋ค.
- ๋ง์ฝ ํ ๋ช
์ ๊ฐ๋ฐ์๊ฐ 'C#'๊ณผ 'Python' ๋ ๋ค ์ธ ์ ์์ผ๋ฉด, ์นดํฐ์์ ๊ณฑ์ ํ๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ ๊ฐ๋ฐ์๊ฐ ๋ ๋ฒ ์ค๋ณต๋์ด ์ถ๋ ฅ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด
DISTINCT
๋ฅผ ์ฌ์ฉํ๋ค.
3. ๊ตฌํ ์ฝ๋ ๐
SELECT
DISTINCT
d.ID,
d.EMAIL,
d.FIRST_NAME,
d.LAST_NAME
FROM DEVELOPERS d, SKILLCODES s
WHERE s.NAME IN ('C#', 'Python')
AND d.SKILL_CODE & s.CODE > 0
ORDER BY d.ID
ASC;
4. DRILING ๐ฏ
์ด๋ชจ์ง ๋ชจ์: ๐ค, โ โจ 0๏ธโฃ1๏ธโฃ2๏ธโฃ3๏ธโฃ4๏ธโฃ5๏ธโฃ6๏ธโฃ7๏ธโฃ8๏ธโฃ9๏ธโฃ๐