์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- custom hook
- JavaScript
- router v6
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- Node.js
- ๋ธ๋ฃจํธํฌ์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- ์ด๋ฏธ์ง ์์
- ๋ฆฌ๋์ค ํดํท
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝํ
- DP
- ์ด๋ถํ์
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- TypeScript
- ๊ณผ์ ํ ์คํธ
- ์นด์นด์ค์ฑ์ฉ
- ๋๋๊ทธ ์ด๋ฒคํธ
- ์ฝ๋ฉํ ์คํธ
- React
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- js
- Redux toolkit
- ๋์ ๊ณํ๋ฒ
- ์นด์นด์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ฝ๋ ํฌ๋ฉง
- icecandidate
- Today
- Total
๐ฅ dev-ruby
[ํ๋ก๊ทธ๋๋จธ์ค][Lv.2] ์์ ๊ฒ์ | ์๋ฐ์คํฌ๋ฆฝํธ | 2021 KAKAO BLIND RECRUITMENT ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค][Lv.2] ์์ ๊ฒ์ | ์๋ฐ์คํฌ๋ฆฝํธ | 2021 KAKAO BLIND RECRUITMENT
ruby_s 2021. 12. 31. 20:59๋ฌธ์ ์ค๋ช
[๋ณธ ๋ฌธ์ ๋ ์ ํ์ฑ๊ณผ ํจ์จ์ฑ ํ ์คํธ ๊ฐ๊ฐ ์ ์๊ฐ ์๋ ๋ฌธ์ ์ ๋๋ค.]
์นด์นด์ค๋ ํ๋ฐ๊ธฐ ๊ฒฝ๋ ฅ ๊ฐ๋ฐ์ ๊ณต๊ฐ์ฑ์ฉ์ ์งํ ์ค์ ์์ผ๋ฉฐ ํ์ฌ ์ง์์ ์ ์์ ์ฝ๋ฉํ ์คํธ๊ฐ ์ข ๋ฃ๋์์ต๋๋ค. ์ด๋ฒ ์ฑ์ฉ์์ ์ง์์๋ ์ง์์ ์์ฑ ์ ์๋์ ๊ฐ์ด 4๊ฐ์ง ํญ๋ชฉ์ ๋ฐ๋์ ์ ํํ๋๋ก ํ์์ต๋๋ค.
- ์ฝ๋ฉํ ์คํธ ์ฐธ์ฌ ๊ฐ๋ฐ์ธ์ด ํญ๋ชฉ์ cpp, java, python ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ง์ ์ง๊ตฐ ํญ๋ชฉ์ backend์ frontend ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ง์ ๊ฒฝ๋ ฅ๊ตฌ๋ถ ํญ๋ชฉ์ junior์ senior ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ ํธํ๋ ์์ธํธ๋๋ก chicken๊ณผ pizza ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
์ธ์ฌ์์
ํ์ ๊ทผ๋ฌดํ๊ณ ์๋ ๋๋์ฆ๋ ์ฝ๋ฉํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ์ฌ ์ฑ์ฉ์ ์ฐธ์ฌํ ๊ฐ๋ฐํ๋ค์ ์ ๊ณตํ๊ธฐ ์ํด ์ง์์๋ค์ ์ง์ ์กฐ๊ฑด์ ์ ํํ๋ฉด ํด๋น ์กฐ๊ฑด์ ๋ง๋ ์ง์์๊ฐ ๋ช ๋ช
์ธ ์ง ์ฝ๊ฒ ์ ์ ์๋ ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋ฐํ์์ ๊ถ๊ธํดํ๋ ๋ฌธ์์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๋ ์ ์์ต๋๋ค.
์ฝ๋ฉํ
์คํธ์ java๋ก ์ฐธ์ฌํ์ผ๋ฉฐ, backend ์ง๊ตฐ์ ์ ํํ๊ณ , junior ๊ฒฝ๋ ฅ์ด๋ฉด์, ์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ฌ๋ ์ค ์ฝ๋ฉํ
์คํธ ์ ์๋ฅผ 50์ ์ด์ ๋ฐ์ ์ง์์๋ ๋ช ๋ช
์ธ๊ฐ?
๋ฌผ๋ก ์ด ์ธ์๋ ๊ฐ ๊ฐ๋ฐํ์ ์ํฉ์ ๋ฐ๋ผ ์๋์ ๊ฐ์ด ๋ค์ํ ํํ์ ๋ฌธ์๊ฐ ์์ ์ ์์ต๋๋ค.
- ์ฝ๋ฉํ ์คํธ์ python์ผ๋ก ์ฐธ์ฌํ์ผ๋ฉฐ, frontend ์ง๊ตฐ์ ์ ํํ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์, ์์ธํธ๋๋ก chicken์ ์ ํํ ์ฌ๋ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 100์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?
- ์ฝ๋ฉํ ์คํธ์ cpp๋ก ์ฐธ์ฌํ์ผ๋ฉฐ, senior ๊ฒฝ๋ ฅ์ด๋ฉด์, ์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ฌ๋ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 100์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?
- backend ์ง๊ตฐ์ ์ ํํ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์ ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 200์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?
- ์์ธํธ๋๋ก chicken์ ์ ํํ ์ฌ๋ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 250์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?
- ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 150์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?
์ฆ, ๊ฐ๋ฐํ์์ ๊ถ๊ธํดํ๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ฅผ ๊ฐ์ต๋๋ค.
* [์กฐ๊ฑด]์ ๋ง์กฑํ๋ ์ฌ๋ ์ค ์ฝ๋ฉํ
์คํธ ์ ์๋ฅผ X์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช
์ธ๊ฐ?
[๋ฌธ์ ]
์ง์์๊ฐ ์ง์์์ ์
๋ ฅํ 4๊ฐ์ง์ ์ ๋ณด์ ํ๋ํ ์ฝ๋ฉํ
์คํธ ์ ์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๊ตฌ์ฑํ ๊ฐ์ ๋ฐฐ์ด info, ๊ฐ๋ฐํ์ด ๊ถ๊ธํดํ๋ ๋ฌธ์์กฐ๊ฑด์ด ๋ฌธ์์ด ํํ๋ก ๋ด๊ธด ๋ฐฐ์ด query๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๊ฐ ๋ฌธ์์กฐ๊ฑด์ ํด๋นํ๋ ์ฌ๋๋ค์ ์ซ์๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
[์ ํ์ฌํญ]
- info ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 50,000 ์ดํ์ ๋๋ค.
- info ๋ฐฐ์ด ๊ฐ ์์์ ๊ฐ์ ์ง์์๊ฐ ์ง์์์ ์
๋ ฅํ 4๊ฐ์ง ๊ฐ๊ณผ ์ฝ๋ฉํ
์คํธ ์ ์๋ฅผ ํฉ์น "๊ฐ๋ฐ์ธ์ด ์ง๊ตฐ ๊ฒฝ๋ ฅ ์์ธํธ๋ ์ ์" ํ์์
๋๋ค.
- ๊ฐ๋ฐ์ธ์ด๋ cpp, java, python ์ค ํ๋์ ๋๋ค.
- ์ง๊ตฐ์ backend, frontend ์ค ํ๋์ ๋๋ค.
- ๊ฒฝ๋ ฅ์ junior, senior ์ค ํ๋์ ๋๋ค.
- ์์ธํธ๋๋ chicken, pizza ์ค ํ๋์ ๋๋ค.
- ์ ์๋ ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ ์๋ฏธํ๋ฉฐ, 1 ์ด์ 100,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๊ฐ ๋จ์ด๋ ๊ณต๋ฐฑ๋ฌธ์(์คํ์ด์ค ๋ฐ) ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- query ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 100,000 ์ดํ์ ๋๋ค.
- query์ ๊ฐ ๋ฌธ์์ด์ "[์กฐ๊ฑด] X" ํ์์
๋๋ค.
- [์กฐ๊ฑด]์ "๊ฐ๋ฐ์ธ์ด and ์ง๊ตฐ and ๊ฒฝ๋ ฅ and ์์ธํธ๋" ํ์์ ๋ฌธ์์ด์ ๋๋ค.
- ์ธ์ด๋ cpp, java, python, - ์ค ํ๋์ ๋๋ค.
- ์ง๊ตฐ์ backend, frontend, - ์ค ํ๋์ ๋๋ค.
- ๊ฒฝ๋ ฅ์ junior, senior, - ์ค ํ๋์ ๋๋ค.
- ์์ธํธ๋๋ chicken, pizza, - ์ค ํ๋์ ๋๋ค.
- '-' ํ์๋ ํด๋น ์กฐ๊ฑด์ ๊ณ ๋ คํ์ง ์๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค.
- X๋ ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ ์๋ฏธํ๋ฉฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฌ๋ ์ค X์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ ์ง๋ฅผ ์๋ฏธํฉ๋๋ค.
- ๊ฐ ๋จ์ด๋ ๊ณต๋ฐฑ๋ฌธ์(์คํ์ด์ค ๋ฐ) ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๋ฅผ ๋ค๋ฉด, "cpp and - and senior and pizza 500"์ "cpp๋ก ์ฝ๋ฉํ ์คํธ๋ฅผ ๋ดค์ผ๋ฉฐ, ๊ฒฝ๋ ฅ์ senior ์ด๋ฉด์ ์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 500์ ์ด์ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ๋ช ๋ช ์ธ๊ฐ?"๋ฅผ ์๋ฏธํฉ๋๋ค.
[์ ์ถ๋ ฅ ์]
info | query | result |
["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] | ["java and backend and junior and pizza 100","python and frontend and senior and chicken 200","cpp and - and senior and pizza 250","- and backend and senior and - 150","- and - and - and chicken 100","- and - and - and - 150"] | [1,1,1,1,2,4] |
์ง์์ ์ ๋ณด๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ธ์ด | ์ง๊ตฐ | ๊ฒฝ๋ ฅ | ์์ธ ํธ๋ | ์ ์ |
java | backend | junior | pizza | 150 |
python | frontend | senior | chicken | 210 |
python | frontend | senior | chicken | 150 |
cpp | backend | senior | pizza | 260 |
java | backend | junior | chicken | 80 |
python | backend | senior | chicken | 50 |
- "java and backend and junior and pizza 100" : java๋ก ์ฝ๋ฉํ ์คํธ๋ฅผ ๋ดค์ผ๋ฉฐ, backend ์ง๊ตฐ์ ์ ํํ๊ณ junior ๊ฒฝ๋ ฅ์ด๋ฉด์ ์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 100์ ์ด์ ๋ฐ์ ์ง์์๋ 1๋ช ์ ๋๋ค.
- "python and frontend and senior and chicken 200" : python์ผ๋ก ์ฝ๋ฉํ ์คํธ๋ฅผ ๋ดค์ผ๋ฉฐ, frontend ์ง๊ตฐ์ ์ ํํ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์ ์์ธ ํธ๋๋ก chicken์ ์ ํํ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 200์ ์ด์ ๋ฐ์ ์ง์์๋ 1๋ช ์ ๋๋ค.
- "cpp and - and senior and pizza 250" : cpp๋ก ์ฝ๋ฉํ ์คํธ๋ฅผ ๋ดค์ผ๋ฉฐ, senior ๊ฒฝ๋ ฅ์ด๋ฉด์ ์์ธํธ๋๋ก pizza๋ฅผ ์ ํํ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 250์ ์ด์ ๋ฐ์ ์ง์์๋ 1๋ช ์ ๋๋ค.
- "- and backend and senior and - 150" : backend ์ง๊ตฐ์ ์ ํํ๊ณ , senior ๊ฒฝ๋ ฅ์ธ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 150์ ์ด์ ๋ฐ์ ์ง์์๋ 1๋ช ์ ๋๋ค.
- "- and - and - and chicken 100" : ์์ธํธ๋๋ก chicken์ ์ ํํ ์ง์์ ์ค ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 100์ ์ด์์ ๋ฐ์ ์ง์์๋ 2๋ช ์ ๋๋ค.
- "- and - and - and - 150" : ์ฝ๋ฉํ ์คํธ ์ ์๋ฅผ 150์ ์ด์ ๋ฐ์ ์ง์์๋ 4๋ช ์ ๋๋ค.
๋ด๊ฐ ํผ ํ์ด
์ด ๋ฌธ์ ๋ ์ด๋ถ ํ์์ผ๋ก ํ์ด์ผ ํ๋ ๋ฌธ์ ๊ฐ๋ค.
์ฒ์์ ํผ ํ์ด (์ ํ์ฑ success, ํจ์จ์ฑ fail)
function solution(info, query) { // ์ ํ์ฑ success, ํจ์จ์ฑ fail
const infoSplited = info.map((str)=>str.split(' '));
const querySplited = query.map((str)=>str.split(/ and | /g));
let result = new Array(query.length).fill(0);
querySplited.forEach((arr, idx)=>{
infoSplited.forEach((i)=>{
const copyQuery = arr.slice(0, -1).filter((v)=>v!=='-');
let intersection = copyQuery.filter(x=>i.includes(x)).length;
intersection === copyQuery.length && Number(i[i.length-1]) >= Number(arr[arr.length-1]) ? result[idx] += 1 : null;
})
})
return result;
}