[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๊ตฌ์ฌ ๊พธ๋ฌ๋ฏธ
๋ฌธ์ ์ค๋ช
์๋ฆฌ์ค ํ ๋ผ๋ ๊ตฌ์ฌ ์ฅ์ฌ๋ฅผ ์ํด ๊ตฌ์ฌ์ ๊พธ๋ฌ๋ฏธ์ ๋ด์ ํฌ์ฅ์ ํ๊ณ ์์ต๋๋ค. ์๋ฆฌ์ค ํ ๋ผ๊ฐ ์ค๋นํ ๊ตฌ์ฌ์ ์์๋ณ๋ก ๋ฌด๊ฒ๊ฐ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ ๊ตฌ์ฌ ๊พธ๋ฌ๋ฏธ ๋ํ ๊ตฌ์ฌ์ ๋ด์๋ผ ์ ์๋ ๋ฌด๊ฒ๊ฐ ๋ชจ๋ ๋ฌ๋ผ ์ต์ํ์ ๊ตฌ์ฌ ๊ฐ์๋ฅผ ํ์ฉํด ๊พธ๋ฌ๋ฏธ๋ฅผ ์ฑ์ฐ๋ ค๊ณ ํฉ๋๋ค.
์๊น๊ณผ ๋ฌด๊ฒ๊ฐ ๋ค๋ฅธ 3๊ฐ์ง ์ข ๋ฅ์ ๊ตฌ์ฌ์ด ๋ฌด์ ํ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
๊ตฌ์ฌ ๋ฌด๊ฒ
๋นจ๊ฐ ๊ตฌ์ฌ 250g
ํ๋ ๊ตฌ์ฌ 40g
ํฐ ๊ตฌ์ฌ 10g
์๋ฅผ ๋ค์ด, 300 300g์ ๊พธ๋ฌ๋ฏธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๋นจ๊ฐ ๊ตฌ์ฌ 1๊ฐ, ํ๋ ๊ตฌ์ฌ 1๊ฐ, ํฐ ๊ตฌ์ฌ
1๊ฐ๋ก ์ต์ 3๊ฐ์ ๊ตฌ์ฌ์ด ํ์ํฉ๋๋ค.
์ ํ์ฌํญ
input ๋งค๊ฐ๋ณ์๋ก๋ถํฐ ๊ตฌ์ฌ ๊พธ๋ฌ๋ฏธ์ ๋ฌด๊ฒ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ๊พธ๋ฌ๋ฏธ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ์ต์ ๊ตฌ์ฌ์ ์๋ฅผ ์ถ๋ ฅํ์ธ์.
(1โคinputโค10,000)
๋ง์ฝ ๋ฌด๊ฒ์ ๋ง์ถ์ด ๊พธ๋ฌ๋ฏธ๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
300 | 3 |
550 | 4 |
65 | -1 |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(input) {
let bead = [
{ color: 'redBead', weight: 250 },
{ color: 'whiteBead', weight: 40 },
{ color: 'blueBead', weight: 10 },
];
let count = 0;
for (let i = 0; i < bead.length; i++) {
let needBead = bead[i];
while (input >= needBead.weight) {
input -= needBead.weight;
count += 1;
}
}
if (input !== 0) count = -1;
return count;
}
๊ฐ ๊ตฌ์ฌ ๋ณ ๋ชฉ๋ก๊ณผ ๋ฌด๊ฒ์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ฌ
๋ฐฐ์ด์ ์ํํ๋ฉด์ ๊ฐ์ฒด ์ ๋ชฉ๋ก์ ๊บผ๋
๋ฐ๋ณต ์์ while์ ์ค๋ณตํ์ฌ ๊ฐ ๊ตฌ์ฌ ๋ฌด๊ฒ๊ฐ input๋งํผ ํ์ํ ์ต์ ๋ฌด๊ฒ๋ฅผ ๊ตฌํ ๋๊น์ง ์ํ
input์ ํ์ํ ๋ฌด๊ฒ ๊ฐ๋งํผ count๋ฅผ ๋ํด์ค ๊ฐ ๋ฌด๊ฒ๋ณ๋ก ๋ช ๊ฐ์ฉ ํ์ํ์ง ๊ตฌํจ
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋ง์ฒ๋ฃจ
๋ฌธ์ ์ค๋ช
์ฝ๋๋๋์ ์ ๋ฅํ ๊ฑด์ถ๊ฐ ์๋ฆฌ์ค ํ ๋ผ๋ ๋ชจ์์ฅ์๋ก๋ถํฐ ์๋ก์ด ์ฌ์
์ ์ ์ ๋ฐ์์ต๋๋ค.
๋ฐ๋ก ์ฝ๋๋๋ ํ๊ฐ์ด๋ฐ ๋ง์ฒ๋ฃจ๋ฅผ ์ง์ด ๊ด๊ด๊ฐ์ ์ ์นํ๋ ์ฌ์ ์ด์์ต๋๋ค.
์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
๋ง์ฒ๋ฃจ์ ๋์ด๋ฅผ input ๋งค๊ฐ๋ณ์๋ก๋ถํฐ ์ ๋ ฅ๋ฐ์ ์๋์ ์กฐ๊ฑด์ ์ฐธ๊ณ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋งํผ์ ๋์ด๋ฅผ ๊ฐ์ง๋ ๋ง์ฒ๋ฃจ๋ฅผ ์ถ๋ ฅํ์ธ์.
์ถ๋ ฅํ ๊ฐ์ solution ํจ์ ์์์ return ํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
3 | * |
-** | |
--*** |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(input) {
let star = '';
for (let i = 1; i <= input; i++) {
for (let j = 0; j < i; j++) {
if (j >= 5) continue;
star += '*';
}
if (i !== input) {
// ๋ง์ง๋ง ๋ฐ๋ณต์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ฐํ ๋ฌธ์ ์ถ๊ฐ
star += '\n';
}
}
return star;
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋ฐ์ชฝ์ง๋ฆฌ ํผ๋ผ๋ฏธ๋
๋ฌธ์ ์ค๋ช
์๋ฆฌ์ค ํ ๋ผ๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ซ์๋งํผ ๋์ด๋ฅผ ๊ฐ์ง๋ ๋ฐ์ชฝ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋ค์ด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
*num ๋งค๊ฐ๋ณ์์์ ์์ฐ์๋ฅผ ์
๋ ฅ๋ฐ์ต๋๋ค. ์
๋ ฅ๋ ์ซ์๋งํผ ๋์ด๋ฅผ ๊ฐ์ง๋ ๋ฐ์ชฝ ํผ๋ผ๋ฏธ๋๋ฅผ ์ถ๋ ฅํ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
3 | --* |
-** | |
*** |
function solution(num) {
let result = '';
for (let i = 1; i <= num; i++) {
let answer = '';
let space = '';
for (let j = 0; j < num - i; j++) {
space += ' ';
}
for (let k = 0; k < i; k++) {
answer += '*';
}
result += space + answer;
if (i < num) {
result += '\n';
}
}
return result;
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๊ฒน์น๋ ๊ตฌ๊ฐ ์ฐพ๊ธฐ
๋ฌธ์ ์ค๋ช
์์ง์ ์์ A ๊ตฌ๊ฐ๊ณผ B ๊ตฌ๊ฐ์ด ์์ต๋๋ค.
์๋ฅผ๋ค์ด A ๊ตฌ๊ฐ์ 3 ์ด์ 7 ์ดํ์ ํด๋นํ๋ฉฐ, B ๊ตฌ๊ฐ์ 5 ์ด์ 9 ์ดํ์ ํด๋นํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด 5 ์ด์ 7 ์ดํ์ ๊ตฌ๊ฐ์ A ๊ตฌ๊ฐ์ด๋ฉด์ ๋์์ B ๊ตฌ๊ฐ์ด ๋ฉ๋๋ค.
์์ ๊ฐ์ด, ๋ ๊ตฌ๊ฐ์ ๋ฒ์๊ฐ ์ฃผ์ด์ก์ ๋ ๋ ๊ตฌ๊ฐ์ด ๊ฒน์น๋ ๋ฒ์๋ฅผ ์ถ๋ ฅํ์ธ์.
๋ ๊ตฌ๊ฐ์ด ๊ฒน์น์ง ์๋ ๊ฒฝ์ฐ๋ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์ ํ์ฌํญ
๋ค ์ค์ ๊ฑธ์ณ 0์ด์์ ์ ์๊ฐ ์ค๋ฐ๊ฟ์ ํฌํจํ ๋ฌธ์์ด ํํ๋ก ๋งค๊ฐ๋ณ์ input์ ๋ฐ์์ง๋๋ค.
์ฒซ ๋ฒ์งธ ์ค์๋ ๊ตฌ๊ฐ A์ ์ต์๊ฐ์ด ์
๋ ฅ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ์ค์๋ ๊ตฌ๊ฐ A์ ์ต๋๊ฐ์ด ์
๋ ฅ๋ฉ๋๋ค
์ธ ๋ฒ์งธ ์ค์๋ ๊ตฌ๊ฐ B์ ์ต์๊ฐ์ด ์
๋ ฅ๋ฉ๋๋ค
๋ค ๋ฒ์งธ ์ค์๋ ๊ตฌ๊ฐ B์ ์ต๋๊ฐ์ด ์
๋ ฅ๋ฉ๋๋ค.
๊ฐ ๊ตฌ๊ฐ์ ๋ํ๋ด๋ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ํญ์ ์ ์์
๋๋ค.
๊ตฌ๊ฐ A์ B, ๋ ๊ตฌ๊ฐ์ ๊ฒน์น๋ ๋ถ๋ถ์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ์ธ์.
์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ ํด๋น ๊ตฌ๊ฐ์ ๊ฒน์น๋ ๊ตฌ๊ฐ์ ํฌํจ๋ฉ๋๋ค.
๋ง์ฝ ๋ ๊ตฌ๊ฐ์ด ๊ฒน์น์ง ์๋๋ค๋ฉด X๋ฅผ ์ถ๋ ฅํด ์ฃผ์ธ์.
๊ฐ ๊ตฌ๊ฐ์ ๋ฐฐ์ด์ ๋ด์ solution ํจ์ ์์์ return ํ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
3 | |
7 | [5, 7] |
5 | |
9 | |
0 | |
10 | [3, 8] |
3 | |
8 |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
let splitString = function (word, seperator) {
let result = [];
let currentWord = '';
if (seperator === '') {
// separator๊ฐ ๋น ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ, ๊ฐ ๊ธ์๋ฅผ ๋ฐฐ์ด์ ๋ด์
for (let i = 0; i < word.length; i++) {
result.push(word[i]);
}
} else {
for (let i = 0; i < word.length; i++) {
if (word[i] === seperator) {
result.push(currentWord);
currentWord = '';
} else {
currentWord += word[i];
}
}
result.push(currentWord);
}
return result;
};
let range = function (min, max) {
let ansewr = [];
for (min; min <= max; min++) {
ansewr.push(min);
}
return ansewr;
};
function solution(input) {
let inputSplit = splitString(input, '\n');
let rangeA = range(+inputSplit[0], +inputSplit[1]);
let rangeB = range(+inputSplit[2], +inputSplit[3]);
let overlap = [];
for (let i = 0; i < rangeA.length; i++) {
for (let j = 0; j < rangeB.length; j++) {
if (rangeA[i] === rangeB[j]) overlap.push(rangeA[i]);
}
}
if (overlap.length === 0) return 'X';
else return [Math.min(...overlap), Math.max(...overlap)];
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : 8์ ํน๋ณํด!
๋ฌธ์ ์ค๋ช
๊ฐ๋ก, ์ธ๋ก๋ก ๊ฐ์ด๋ฐ๋ฅผ ๊ฐ๋ผ๋ ๋ชจ๋ ๊ฐ์ ๋ชจ์์ธ 8์ ์ข์ํ๋ ์๋ฆฌ์ค ํ ๋ผ๋ 1๋ถํฐ 10000๊น์ง 8์ด๋ผ๋ ์ซ์๊ฐ ๋ช ๋ฒ ๋์ค๋์ง ์์๋ณด๋ ค๊ณ ํด์!
์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
// ๋ฒ์๋ฅผ 1~20๋ก ๊ฐ์ ํ์ ๋ 8์ ๊ฐ์// 8, 18 | 2 |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution() {
let count = 0;
for (let i = 1; i < 10000; i++) {
let currentNum = i;
while (currentNum > 0) {
if (currentNum % 10 === 8) count += 1;
currentNum = Math.floor(currentNum / 10); // currentNum์ ์
๋ฐ์ดํธ ํด์ค์ผํจ.
}
}
return count;
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ์ํธ๋ฌธ ํด์ํ๊ธฐ
๋ฌธ์ ์ค๋ช
์๋๊ทธ๋ง(Enigma, ์์๊ป๋ผ)๋ ๋
์ผ๊ตฐ์ด ์ ์ฅ์์ ์ฌ์ฉํ๋ ์ํธ ์์ฑ ์ฅ์น์
๋๋ค.
๋ ์ผ์ด ์ํ๋ฒณ ๊ฐ๊ฐ์ ๋ํ์ฌ ๋ค๋ฅธ ์ํ๋ฒณ์ ์์๋ก ๋์์ํจ ๋ค์, ์ด๋ ๊ฒ ๋์๋ ์ํ๋ฒณ์ผ๋ก ์ ์ ๋ถํธ๋ฅผ ๋ฐ์กํ์ต๋๋ค.
์๋ฅผ ๋ค์ด a๋ p, b๋ q, c๋ r์ ๋์์์ผ ์ํธํํ ์ ์ ์ ๋ณด๋ผ ๋ โabcโ๋ โpqrโ๋ก ์ ๋ฌ๋ฉ๋๋ค. ํด๋ ์ฝ๋๊ฐ ๋ด๊ธด ๋ฌธ์๋ ์ฌ๋์ ์จ์ ๋ฐ๋ํธ์ ๋ฏธ๋ฆฌ ์ ๋ฌํด๋๊ณ , ์ด๊ฒ์ ์ฐธ๊ณ ํด์ ์ ์ ์ ํด๋ ํ์ต๋๋ค.
์๋๊ทธ๋ง๋ ๊ฐ ์ํ๋ฒณ์ด ๋์ํ๋ ๋ค๋ฅธ ์ํ๋ฒณ์ ์ธํธ์ ๋ฐ๋ผ ๊ฐ์ ๋จ์ด๋ ๋ค๋ฅธ ์ฝ๋๋ก ๋ณํํฉ๋๋ค.
์ํธ์ ์ํ๋ฒณ์ ํค๋ก, ๋์ํ๋ ์ํ๋ฒณ์ ๊ฐ์ผ๋ก ์ ์ฅํ ๋ ๊ฐ์ ๊ฐ์ฒด signal1 ๊ณผ signal2๊ฐ ์์ต๋๋ค.
์ํธ๋ฌธ์ ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
01011 eowxvqp
์ฐ์ 01011์ 5๊ฐ์ 0๊ณผ 1๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ์ํธ๋ฌธ์ด 5๊ฐ์ ์ํ๋ฒณ์ผ๋ก ๊ตฌ์ฑ๋ ์ํธ๋ฌธ์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ์ํธ๋ฌธ์ 5๋ฒ์งธ ์ํ๋ฒณ์ธ v๊น์ง๋ง ํด์ํ๋ฉฐ, 6๋ฒ์งธ ์ํ๋ฒณ์ธ q๋ถํฐ๋ ํด์ํ์ง ์๊ณ ๋ฒ๋ฆฝ๋๋ค.
์์ 0๊ณผ 1์ ๊ฐ์ ์๋ฆฌ์ ์ํ๋ฒณ์ ๊ฐ๊ฐ signal1์ ์ด์ฉํ์ฌ ํด์ํ ์ง, signal2๋ฅผ ์ด์ฉํ์ฌ ํด์ํ ์ง๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ์์์์ 0์ ๋์ํ๋ e, w๋ signal1์ ์ด์ฉํ์ฌ ํด์ํ๊ณ 1์ ๋์ํ๋ o, x, v๋ signal2๋ฅผ ์ด์ฉํ์ฌ ํด์ํฉ๋๋ค.
signal1์์ e์ w๋ ๊ฐ๊ฐ e์ i์ ๋์ํ๋ฉฐ, signal2์์ o, x, v๋ ๊ฐ๊ฐ l,c,e์ ๋์ํฉ๋๋ค.
๋ฐ๋ผ์ ์์์ ์ํธ๋ฌธ์ ํด์ํ๋ฉด elice๊ฐ ๋๋ฉฐ ์ด๋ฅผ ์ถ๋ ฅํ์๋ฉด ์ ๋ต์ ๋๋ค.
์ด์ฒ๋ผ ์ํธ๋ฌธ์ ๋ฌธ์์ด๋ก ์
๋ ฅ๋ฐ์ผ๋ฉด ์ด๋ฅผ ์๋ฌธ์ผ๋ก ํด์ํ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ํ์ฌํญ
ํด์ํด์ผํ ์ํธ๋ฌธ ๋งค๊ฐ๋ณ์ code๋ฅผ ์ ๋ ฅ ๋ฐ์ต๋๋ค.
์ํธ๋ฌธ์ ํด์ํ ํ solution ํจ์ ์์์ return ํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
01011 eowxvqp | elice |
111 zmgaaw | ant |
// ์ํธ์ ์ํ๋ฒณ์ ํค๋ก, ๋์ํ๋ ์๋ฌธ์ ์ํ๋ฒณ์ ๊ฐ์ผ๋ก ์ ์ฅํ ๋์
๋๋ฆฌ์
๋๋ค.
var signal1 = {
a: 'n',
b: 'd',
c: 'a',
d: 'b',
e: 'e',
f: 'l',
g: 'j',
h: 'o',
i: 'z',
j: 'u',
k: 'y',
l: 'v',
m: 'w',
n: 'q',
o: 'x',
p: 'r',
q: 'p',
r: 'f',
s: 'g',
t: 't',
u: 'm',
v: 'h',
w: 'i',
x: 'c',
y: 'k',
z: 's',
};
var signal2 = {
a: 'z',
b: 'y',
c: 'x',
d: 'w',
e: 'v',
f: 'u',
g: 't',
h: 's',
i: 'r',
j: 'q',
k: 'p',
l: 'o',
m: 'n',
n: 'm',
o: 'l',
p: 'k',
q: 'j',
r: 'i',
s: 'h',
t: 'g',
u: 'f',
v: 'e',
w: 'd',
x: 'c',
y: 'b',
z: 'a',
};
let splitMehod = function (word, seperator) {
let result = [];
let currentWord = '';
if (seperator === '') {
for (let i = 0; i < word.length; i++) {
result.push(word[i]);
}
} else {
for (let i = 0; i < word.length; i++) {
if (word[i] === seperator) {
result.push(currentWord);
currentWord = '';
} else {
currentWord += word[i];
}
}
result.push(currentWord);
}
return result;
};
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(code) {
let codeSplit = splitMehod(code, ' ');
let codeNum = codeSplit[0];
let interpritChar = codeSplit[1];
let answer = '';
for (let i = 0; i < codeNum.length; i++) {
if (codeNum[i] === '0') {
answer += signal1[interpritChar[i]];
} else {
answer += signal2[interpritChar[i]];
}
}
return answer;
}
๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฅ ๊ฐ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ํด์ํ ์ ์๊ฒ ์ฐ๊ด๋ ๋ ๊ฐ์ฒด ์กด์ฌ.
๊ณต๋ฐฑ์ ๊ธฐ์ค์ ๋ฌธ์์ด์ ๋๋์ด ๋ฐฐ์ด๋ก ๋ฐํํ๊ณ ์ถ๊ธฐ์ split ๋ฉ์๋ ๊ตฌํ
ํด์ํด์ผ ํ ์ฝ๋์ ๋ฌธ์๋ฅผ ๊ฐ๋ณ ๋ณ์์ ์ ์ฅ
์กฐ๊ฑด์ ํตํด codeNum์ ์ซ์์ ๋ง๊ฒ ๊ฐ์ฒด์ ์กด์ฌํ๋ ํ๋กํผํฐ ๊ฐ์ answer์ ๋ํจ.
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋ฌธ์์ ๋น๋ ์กฐ์ฌํ๊ธฐ.
๋ฌธ์ ์ค๋ช
๋ฌธ์์ด์ ํ๋์ด์์ ๋ฌธ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์์ด ๋ฌธ์ฅ์ ๊ฒฝ์ฐ a๋ถํฐ z๊น์ง์ ์ํ๋ฒณ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ด๋ฐ ์์ด๋ฌธ์ฅ์์ ์ํ๋ฒณ๋ณ๋ก ๊ฐฏ์๋ฅผ ์กฐ์ฌํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์ ์ํ๋ ค๊ณ ํฉ๋๋ค.
์ง์์ฌํญ์ ๋ง์ถฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ฐ๋ฆฌ๋ ๊ฐ์์์ ๋ฉ์๋์ ๋ํด์ ๋ฐฐ์ ์ต๋๋ค. ๊ฐ์์์ ๋ฐฐ์ด ๋ฉ์๋ ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ํธ๋ฆฌํ ๋ฉ์๋๊ฐ ์กด์ฌํฉ๋๋ค.
๊ฐ์์์ ๋ฐฐ์ฐ์ง ์์ ์๋ก์ด ๋ฉ์๋๋ฅผ ํํธ๋ฅผ ๋ณด๊ณ ํ์ฉํด๋ณด์ธ์.
์ ํ์ฌํญ
My name is Elice
my name is elice
์ ์ถ๋ ฅ ์
์ถ๋ ฅ |
---|
{ m: 2, y: 1, n: 1, a: 1, e: 3, i: 2, s: 1, l: 1, c: 1 } |
let splitMethod = function (word, seperater) {
let result = [];
let currentWord = '';
if (seperater === '') {
for (let i = 0; i < word.length; i++) {
result.push(word[i]);
}
} else {
for (let i = 0; i < word.length; i++) {
if (word[i] === seperater) {
result.push(currentWord);
currentWord = '';
} else {
currentWord += word[i];
}
}
result.push(currentWord);
}
return result;
};
let lowCaseAlpa = function (arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
result.push(arr[i].toLowerCase());
}
return result;
};
let theCharLine = function (arr) {
let result = '';
for (let i = 0; i < arr.length; i++) {
result += arr[i];
}
return result;
};
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(str) {
let strSplit = splitMethod(str, ' ');
let lowCase = lowCaseAlpa(strSplit);
let theLine = theCharLine(lowCase);
let answer = {};
for (let i = 0; i < theLine.length; i++) {
let lineItem = theLine[i];
// ์กด์ฌํ๋์ง ์ ํ๋์ง์ ๋ํ ์กฐ๊ฑด ์ฌ๋ถ.
if (!answer[lineItem]) {
answer[lineItem] = 1;
} else answer[lineItem] += 1;
}
return answer;
}
๊ฐ ๊ณต๋ฐฑ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ค์ ๋ฐฐ์ด๋ก ๋ฐํ
๋ฐํ๋ ๋ฐฐ์ด๋ค ์ํํ์ฌ ์๋ฌธ์๋ก ๋ณํ
๋ฐฐ์ด์ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํ.
answer ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด for๋ฐ๋ณต์ ํตํด answer์๋ค ์์ฑ๋ถ์ฌ.
์กฐ๊ฑด์ ํตํด ํด๋น ์์ฑ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด 1์ ๋ํ๊ณ else๋ฉด +=1์ ์นด์ดํธํจ.
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋น๊ทผ ํ์ง๊ธฐ
๋ฌธ์ ์ค๋ช
๋
์์ ์จ๊ฒจ์ ธ ์๋ ๋น๊ทผ์ ์ฐพ๊ธฐ ์ข์ํ๋ ์๋ฆฌ์ค ํ ๋ผ๋ ๋น๊ทผ์ ํ์งํ ์ ์๋ ๋น๊ทผ ํ์ง๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์ผ์ชฝ ํน์ ์ค๋ฅธ์ชฝ์ผ๋ก๋ง ๊ฐ ์ ์๋ ๊ธธ์ด๊ฐ 5์ธ ๊ธธ ์ด๋์ธ๊ฐ์ ๋จ์ด์ก์ต๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ด 5์นธ์ผ๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด ์๊ณ O์ ๋น๊ทผ์ด ์๋ ๊ณณ, X์ ๋น๊ทผ์ด ์๋ ๊ณณ์ด๋ฉฐ ์๋ฆฌ์ค ํ ๋ผ๊ฐ ์ผ์ชฝ์์ ์ธ๋ฒ์งธ ์นธ์ ๋จ์ด์ก๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ์ผ์ชฝ ๋์ผ๋ก ์ด๋ํ๊ฒ ๋๋ฉด ์ด 1๊ฐ์ ๋น๊ทผ์ ํ๋ํ ์ ์์ผ๋ฉฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ 2๊ฐ์ ๋น๊ทผ์ ํ๋ํ ์ ์์ต๋๋ค.
O | X | X | O | O |
O์ X๋ ์ํ๋ฒณ ๋๋ฌธ์ O, X๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ํ์ฌํญ
๋งค๊ฐ๋ณ์ a์์ O, X๋ฅผ ๋ฐ์ต๋๋ค. ๋งค๊ฐ๋ณ์ b์์๋ ์์น ๊ฐ์ธ ์ซ์๋ฅผ ๋ฐ์ต๋๋ค.
๋จ์ด์ง ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ทผ์ ์ต๋ํ ๋ง์ด ํ๋ํ ์ ์๋ ๋ฐฉํฅ(์ผ์ชฝ, ์ค๋ฅธ์ชฝ)์ ์ถ๋ ฅํ์ธ์.
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๋น๊ทผ์ ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ๋์ผ์ ์ถ๋ ฅํ์ธ์.
์ถ๋ ฅ์ solution ํจ์ ์์์ return ํ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
"O X X O O", 3 | ์ค๋ฅธ์ชฝ |
let splitMethod = function (word, seperator) {
let result = [];
let currentWord = '';
if (seperator === '') {
for (let i = 0; i < word.length; i++) {
result.push(word[i]);
}
} else {
for (let i = 0; i < word.length; i++) {
if (word[i] === seperator) {
result.push(currentWord);
currentWord = '';
} else {
currentWord += word[i];
}
}
result.push(currentWord);
}
return result;
};
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(a, b) {
let splitOX = splitMethod(a, ' ');
let leftCount = 0;
for (let i = b-1; i >= 0; i--) {
if (splitOX[i] === 'O') leftCount += 1;
}
let rightCount = 0;
for (let i = b-1; i < splitOX.length; i++) {
if (splitOX[i] === 'O') rightCount += 1;
}
return leftCount > rightCount ? '์ผ์ชฝ' : (leftCount < rightCount ? '์ค๋ฅธ์ชฝ' : '๋์ผ');
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋์นํ์ด ๊ณ์ฐํ๊ธฐ
๋ฌธ์ ์ค๋ช
A, B, C ์ธ๋ช
์ ์น๊ตฌ๋ ์ ์ฌ์ ํจ๊ป ๋จน๊ณ ๊ฐ์ ๋จน์ ๋ฉ๋ด์ ๋ฐ๋ผ ๊ณ์ฐํ๊ธฐ๋ก ํ์ต๋๋ค.
์ธ๋ช ์ ์น๊ตฌ๊ฐ ๊ฐ๊ฐ ๋ฉ๋ด๋ฅผ ํ๋์ฉ๋ง ์ฃผ๋ฌธํ๋ค๋ฉด ์ฝ๊ฒ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๊ฒ ์ง๋ง, B๋ 2๊ฐ์ ๋ฉ๋ด๋ฅผ ์ฃผ๋ฌธํ๊ณ C๋ 3๊ฐ๋ฅผ ์ฃผ๋ฌธํ์ต๋๋ค.
๊ฑฐ๊ธฐ์ ์ธ๋ช ์ด ํจ๊ป ๋จน๋ ์ฌ์ด๋๋ฉ๋ด๊น์ง ํฌํจ๋์ด ์์ด์ ์ด๋ฅผ ๋ฐ์ํด์ ๊ฐ์ ์ง๋ถํ ๊ธ์ก์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ค๊ณ ํฉ๋๋ค.
์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ A, B, C ๊ฐ ๊ฐ๊ฐ ์ง๋ถํด์ผํ๋ ๊ธ์ก์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์ ์ํ์ธ์.
์ ํ์ฌํญ
menu ๋ผ๋ ๊ฐ์ฒด์ ๋ฉ๋ด๋ช ์ ํค๋ก, ๋ฉ๋ด์ ๊ฐ๊ฒฉ์ ๊ฐ์ผ๋ก ์ ์ฅ๋์ด ์์ต๋๋ค.
์ด๋ค์ด ์ฃผ๋ฌธํ ๋ด์ญ์ ๋จน์์ฌ๋, ๋ฉ๋ด์ด๋ฆ, ์๋์ ํํ๋ก ์ ๋ ฅ๋ฐ์ต๋๋ค. ๋ง์ฝ ์ธ๋ช ์ด ๋ค๊ฐ์ด ๋จน์ ๋ฉ๋ด๋ผ๋ฉด K๋ก ํ์ํฉ๋๋ค.
๊ฐ์ ์ง๋ถํ ๊ธ์ก์ ๊ณ์ฐํ์ฌ ๊ฐ์ฒด์ ๋ด์ ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅํ ๊ฐ์ solution ํจ์์์ return ํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
[ | |
[ "A", "๋ผ๋ฉด", 1], | |
[ "B", "๊น๋ฐฅ", 2], | |
[ "B", "๋ก๋ณถ์ด", 1], | { A: 7000, B: 10000, C: 2000 } |
[ "K", "ํ๊น์ธํธ", 1], | |
[ "C", "์ฝ๋ผ", 1 ] | |
]; |
let theObject = function (arr) {
let answer = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < 1; j++) {
let payCount = {
name: arr[i][0],
food: arr[i][1],
foodCnt: arr[i][2],
};
answer.push(payCount);
}
}
return answer;
};
function solution(input) {
var menu = {
๋ก๋ณถ์ด: 5000,
๊น๋ฐฅ: 2000,
ํ๊น์ธํธ: 3000,
์๋: 4000,
๋ผ๋ฉด: 6000,
์ฝ๋ผ: 1000,
์ฌ์ด๋ค: 1000,
};
theObject(input);
let answer = {
A: 0,
B: 0,
C: 0,
K: 0,
};
for (let i = 0; i < input.length; i++) {
let objectName = input[i][0]; // "A", "B", "C" ์ค ํ๋๊ฐ ๋ฉ๋๋ค.
let foodName = input[i][1];
let foodCnt = input[i][2];
answer[objectName] += menu[foodName] * foodCnt;
}
if (answer.K) {
answer.A += Math.floor(answer.K / 3);
answer.B += Math.floor(answer.K / 3);
answer.C += Math.floor(answer.K / 3);
}
delete answer.K;
return answer;
}
์ ๋ ฅ๊ฐ ๊ฐ ๋ฐฐ์ด์ ๋ด๊ธด ์ด๋ฆ, ์์, ๊ฐ์๋ฅผ ๊ฐ์ฒดํ ํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํ
theObject() ํจ์๋ก ๋ฐํ๋ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ for๋ฌธ์ ํตํด ์ํํ์ฌ
objectName
foodName
foodCnt ๋ณ์์ ๊ฐ ๊ฐ์ฒด ์์ฑ๊ฐ์ ๋ง๊ฒ ์ ์ฅ.
answer ๊ฐ์ฒด์ ์ฐ๊ด๋๋ ์์ฑ์ ๋ง๊ฒ ๊ฐ๊ฒฉ์ ๊ฐ์ ์ ์ฅ
k๊ฐ ์กด์ฌํ๋ฉด ์ ํ์ฌํญ ์ธ์์ ๋ง๊ฒ 3์ผ๋ก ๋๋ ๊ฐ๊ฒฉ์ ๊ฐ๊ฐ ๋๋.
๋ง์ง๋ง์ผ๋ก k๋ฅผ ์ญ์ ํ๊ณ
answer ๊ฐ์ฒด ๋ฐํ
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๋ฌธ์์ด ๋ฐ์ดํฐ ์์ถํ๊ธฐ
๋ฌธ์ ์ค๋ช
๋ฐ์ดํฐ๋ฅผ ์์ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํฉ๋๋ค.
๊ทธ ์ค์ Run-length encoding (์ดํ RLE)์ ์ฐ์๋์ด ๊ฐ์ ๋ฌธ์๊ฐ ๋ฐ๋ณต๋ ๋ ์ด๋ค ๋ฌธ์๊ฐ ๋ช๋ฒ ๋ฐ๋ณต๋๋์ง๋ก ์์ถํ์ฌ ํํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, โaaaaaabbbcccccbbbbbโ ๋ผ๋ 19๊ฐ์ ๋ฌธ์ ๋ฐ์ดํฐ๋ a๊ฐ 6๋ฒ, b๊ฐ 3๋ฒ, c๊ฐ 5๋ฒ, b๊ฐ 5๋ฒ ์ฐ์๋์ด ๋ํ๋ฉ๋๋ค. ์ด๋ โa6b3c5b5โ ์ด๋ ๊ฒ 8๊ฐ์ ๋ฌธ์๋ก ์์ถํ์ฌ ํํํ ์ ์์ต๋๋ค.
ํ์ง๋ง โaabbโ ์ด๋ ๊ฒ 2๋ฒ ์ดํ๋ก ๋ฐ๋ณต๋๋ ๋ฌธ์๋ โa2b2โ ์ด๋ ๊ฒ ๋ฐ๊ฟ์ ํํํด๋ ๊ธธ์ด๋ ์ค์ด๋ค์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ทธ๋๋ก โaabbโ๋ก ํํํ๊ณ ์ ํฉ๋๋ค.
์ฆ, โaaabbccccaabbbbโ์ด๋ฐ ๋ฌธ์์ด์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์์ถํ๋ฉด โa3bbc4aab4โ ์ด๋ ๊ฒ ํํํ ์ ์์ต๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ โAโ๋ถํฐ โZโ๊น์ง 26๊ฐ์ ๋๋ฌธ์ ์ํ๋ฒณ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์์ถํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
์ง์์ฌํญ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ๋ฅผ ์์ฑ์ํค์ธ์.
์ ํ์ฌํญ
A๋ถํฐ Z๊น์ง ๋๋ฌธ์ ์ํ๋ฒณ์ผ๋ก๋ง ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ธ์๋ก ๋ฐ์ต๋๋ค.
์ด ๋ฌธ์์ด์ ์์์ ์ค๋ช ํ RLE ๋ฐฉ์์ผ๋ก ์์ถํฉ๋๋ค.
์์ถ๋ ๋ฌธ์์ด์ ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅ์ solution ํจ์ ์์์ return ํ์ธ์.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
AAAAABBCCCDDDZZZWW | A5BBC3D3Z3WW |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(str) {
let upperStr = str.toUpperCase();
let sameCase = {};
for (let i = 0; i < upperStr.length; i++) {
let caseItem = upperStr[i];
if (!sameCase[caseItem]) {
sameCase[caseItem] = 1;
} else {
sameCase[caseItem] += 1;
}
}
console.log(sameCase); // { A: 5, B: 2, C: 3, D: 3, Z: 3, W: 2 }
let outputStr = '';
const keys = Object.keys(sameCase);
console.log(keys); // [ 'A', 'B', 'C', 'D', 'Z', 'W' ]
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
outputStr += key;
if (sameCase[key] > 2) {
outputStr += sameCase[key];
} else {
outputStr += key;
}
}
return outputStr;
}
[์๋ฆฌ์ค ํ๋ฆฌํธ๋] : ๊ดํธ์ ์ง
๋ฌธ์ ์ค๋ช
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๊ดํธ๋ ๋ค์ํ ์ข
๋ฅ๊ฐ ์์ต๋๋ค. ๊ทธ ์ค [ ], ( ), { }๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๊ดํธ๋ฅผ ์ฌ์ฉํ ๋๋ ํญ์ ์ง์ด ๋ง๋ ๊ฒ์ ํ์ธํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด { ( ) [ ] }๋ ์ง์ด ๋ง์ง๋ง { [ } ] .( ) ๋ ์ง์ด ๋ง์ง ์์ต๋๋ค.
์ด๊ฒ์ ํ์ธํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ๋ฐฐ์ด์ ํ์ฉํด์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
ํํธ๋ก ์ ๊ณตํ๋ ๋ด์ฉ๊ณผ ์ง์์ฌํญ์ ์ฝ๊ณ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ํ์ฌํญ
(a+b[a])+[{(b*e)/(a+q)}]
([])[{()()}]
๋ฐฐ์ด์ pop()๊ณผ push()๋ฅผ ์ด์ฉํด์ ๊ดํธ์ ์ง์ด ๋ง๋์ง ๋ง์ง ์๋์ง๋ฅผ ํ ์คํธํฉ๋๋ค.
์ง์ด ๋ง๋ค๋ฉด ์ ์, ์ง์ด ๋ง์ง ์๋ ๋ถ๋ถ์ด ํ๋๋ผ๋ ์๋ค๋ฉด ๋น์ ์์ด๋ผ๊ณ ์ถ๋ ฅํฉ๋๋ค. ์ ๋ฌธ์ฅ์ ์ง์ด ๋ง์ผ๋ฏ๋ก ์ ์์ ์ถ๋ ฅํฉ๋๋ค.
์ ์ถ๋ ฅ ์
์ ๋ ฅ | ์ถ๋ ฅ |
---|---|
(a+b[a])+[{(b*e)/(a+q)}] | ์ ์ |
// ์ง์์ฌํญ์ ์ฐธ๊ณ ํ์ฌ solution ํจ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
function solution(string) {
const stack = [];
// ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ์ ๋์์ ์ ์ํฉ๋๋ค.
const bracketsMap = {
')': '(',
']': '[',
'}': '{',
};
for (let i = 0; i < string.length; i++) {
const char = string[i];
if (char === '(' || char === '[' || char === '{') {
// ์ฌ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ ์คํ์ ์ถ๊ฐํฉ๋๋ค.
stack.push(char);
} else if (char === ')' || char === ']' || char === '}') {
// ๋ซ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ ์คํ์์ ๋ง์ง๋ง ์์๋ฅผ ๊บผ๋
๋๋ค.
if (stack.length === 0 || stack.pop() !== bracketsMap[char]) {
// ์คํ์ด ๋น์ด์๊ฑฐ๋ ์ง์ด ๋ง์ง ์๋ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํฉ๋๋ค.
return '๋น์ ์';
}
}
}
// ๋ชจ๋ ์
๋ ฅ๊ฐ์ ์ฒ๋ฆฌํ ํ์ ์คํ์ด ๋น์ด์๋ค๋ฉด, ๊ดํธ ์ง์ด ๋ง๋ ๊ฒ์ผ๋ก ํ๋ณํฉ๋๋ค.
return stack.length === 0 ? '์ ์' : '๋น์ ์';
}
์ ๋ดค์ต๋๋ค. ์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค.