ํ๋ก๊ทธ๋๋จธ์ค SQL(Oracle), JS ์๊ณ ๋ฆฌ์ฆ
ํจ์ง์ด๋ ๋ฉ๋ฆฌ ๋ฐ๊ธฐ๋ฅผ ์ฐ์ตํ๊ณ ์์ต๋๋ค.
ํจ์ง์ด๋ ํ๋ฒ์ 1์นธ, ๋๋ 2์นธ์ ๋ธ ์ ์์ต๋๋ค.
์นธ์ด ์ด 4๊ฐ ์์ ๋,
ํจ์ง์ด๋
(1์นธ, 1์นธ, 1์นธ, 1์นธ)
(1์นธ, 2์นธ, 1์นธ)
(1์นธ, 1์นธ, 2์นธ)
(2์นธ, 1์นธ, 1์นธ)
(2์นธ, 2์นธ)
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋งจ ๋ ์นธ์ ๋๋ฌํ ์ ์์ต๋๋ค.
๋ฉ๋ฆฌ๋ฐ๊ธฐ์ ์ฌ์ฉ๋ ์นธ์ ์ n์ด ์ฃผ์ด์ง ๋,
ํจ์ง์ด๊ฐ ๋์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง์ธ์ง ์์๋ด,
์ฌ๊ธฐ์ 1234567๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์.
์๋ฅผ ๋ค์ด 4๊ฐ ์
๋ ฅ๋๋ค๋ฉด,
5๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
n | result |
---|---|
4 | 5 |
3 | 3 |
function solution(n) {
let dp = Array(n+1).fill(0)
dp[1] = 1
dp[2] = 2
for(let i = 3; i <= n; i++){
dp[i] = (dp[i-1] + dp[i-2]) % 1234567
}
// ๋ฆฌํด ๊ฐ์ dp%1234567ํ n์ด ํน์ ๊ฐ ์ด์์ผ ๊ฒฝ์ฐ null์ด ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
return dp[n]
}
์์ ๋ฌธ์ ๊ฐ ํผ๋ณด๋์น๋ฌธ์ ์ ๋์ผํ ํํ์ธ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ์ dp๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด, ์ฌ๊ท๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ํจ์จ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
ANIMAL_INS ํ
์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ
์ด๋ธ์
๋๋ค.
ANIMAL_INS ํ
์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ,
ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋
๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข
, ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋
๋๋ค.
NAME | TYPE | NULLABLE |
---|---|---|
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
๋๋ฌผ ๋ณดํธ์์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋๋ฌผ์ ์ด๋ฆ์ ์กฐํํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
SELECT NAME
FROM (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME asc)
WHERE rownum = 1;
๋จผ์ ์คํ์ด ๋๋ FROM์ ์์ DATETIME์ ๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ
์ด๋ธ์ ์ ์ ํฉ๋๋ค. (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME asc)
Oracle์ Topํจ์๊ฐ ์์ผ๋ rownum์ ํตํ์ฌ ์ถ๋ ฅํ ํ์ ๊ฐฏ์๋ฅผ ์ ์ธํฉ๋๋ค.
-- sql server
top(int) : ํ
์ด๋ธ ์์์์๋ถํฐ int์ ๊ฐ๋งํผ์ ํ์ ์ถ๋ ฅํฉ๋๋ค. SELECT๋ฌธ์์ ์ฌ์ฉํฉ๋๋ค.
-- oracle
rownum : ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ ํ์ ๊ฐฏ์๋ฅผ ์ ํํฉ๋๋ค. WHERE๋ฌธ์์ ์ฌ์ฉํฉ๋๋ค.