Skip to content

Commit 00a9fd3

Browse files
authored
Merge pull request #54 from grap3fruit/soonwon
14회차 문제풀이
2 parents 8b7e735 + ba20895 commit 00a9fd3

File tree

16 files changed

+543
-0
lines changed

16 files changed

+543
-0
lines changed

src/grap3fruit/goorm/43089.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Run by Node.js
2+
const getResultLength = (data) => {
3+
dataArr = data[0].split('');
4+
// console.log(dataArr)
5+
const result = dataArr.filter((el) => el === data[1]);
6+
return result.length;
7+
};
8+
9+
const readline = require('readline');
10+
const rl = readline.createInterface({
11+
input: process.stdin,
12+
output: process.stdout,
13+
});
14+
15+
let count = 0;
16+
let n = 2;
17+
data = [];
18+
rl.on('line', function (line) {
19+
data.push(line);
20+
count += 1;
21+
if (count === n) {
22+
rl.close();
23+
}
24+
}).on('close', function () {
25+
console.log(getResultLength(data));
26+
process.exit();
27+
});

src/grap3fruit/goorm/43125.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Run by Node.js
2+
3+
const readline = require('readline');
4+
const rl = readline.createInterface({
5+
input: process.stdin,
6+
output: process.stdout,
7+
});
8+
9+
let N = 0;
10+
// const data = [];
11+
let count = 0;
12+
13+
rl.on('line', function (line) {
14+
if (!N) {
15+
N = +line;
16+
} else {
17+
const data = line.split(' ').map((el) => +el);
18+
let min = data[0];
19+
for (let i = 1; i < data.length; i++) {
20+
if (data[i] < min) {
21+
min = data[i];
22+
}
23+
}
24+
console.log(min);
25+
rl.close();
26+
}
27+
}).on('close', function () {
28+
process.exit();
29+
});

src/grap3fruit/goorm/88520.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const print = (data) => {
2+
console.log(data);
3+
};
4+
5+
const getTrashCount = (data, A, B, K) => {
6+
let count = 0;
7+
for (let i = A; i < A + K; i++) {
8+
for (let j = B; j < B + K; j++) {
9+
if (data[i][j] === 1) {
10+
count += 1;
11+
}
12+
}
13+
}
14+
return count;
15+
};
16+
17+
const solution = (data, info) => {
18+
const [N, K] = info;
19+
let min_result = K * K;
20+
for (let i = 0; i < N - K + 1; i++) {
21+
for (let j = 0; j < N - K + 1; j++) {
22+
min_result = Math.min(min_result, getTrashCount(data, i, j, K));
23+
}
24+
}
25+
console.log(min_result);
26+
};
27+
28+
const readline = require('readline');
29+
30+
(async () => {
31+
let rl = readline.createInterface({ input: process.stdin });
32+
33+
let T = null;
34+
let info = null; // N, K
35+
let data = [];
36+
let count_T = 0;
37+
let count_N = 0;
38+
for await (const line of rl) {
39+
if (!T) {
40+
T = +line;
41+
} else if (T && !info) {
42+
info = line.split(' ').map((el) => +el);
43+
} else {
44+
data.push(line.split(' ').map((el) => +el));
45+
count_N += 1;
46+
}
47+
if (T && info) {
48+
if (info[0] === count_N) {
49+
// 로직 수행 & 초기화
50+
print(data);
51+
solution(data, info);
52+
53+
info = null; // N, K
54+
data = [];
55+
count_T = 0;
56+
count_N = 0;
57+
}
58+
}
59+
}
60+
61+
// rl.close();
62+
63+
process.exit();
64+
})();

src/grap3fruit/goorm/input.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const print = (N, data) => {
2+
console.log(N);
3+
console.log(data);
4+
};
5+
6+
const readline = require('readline');
7+
const rl = readline.createInterface({
8+
input: process.stdin,
9+
output: process.stdout,
10+
});
11+
12+
let N = null;
13+
let count = 0;
14+
const data = [];
15+
16+
rl.on('line', function (line) {
17+
console.log(line);
18+
if (!N) {
19+
N = +line;
20+
} else {
21+
// data.push(line.split(' ').map((el) => +el));
22+
// data.push(line.split('').map((el) => +el));
23+
// data.push(line.split('').map((el) => el));
24+
data.push(line);
25+
}
26+
count += 1;
27+
if (count === N) {
28+
rl.close();
29+
}
30+
}).on('close', function () {
31+
print(N, data);
32+
process.exit();
33+
});

src/grap3fruit/goorm/input1_2.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const print = (N, info, data) => {
2+
console.log(N);
3+
console.log(info);
4+
console.log(data);
5+
};
6+
7+
const readline = require('readline');
8+
const rl = readline.createInterface({
9+
input: process.stdin,
10+
output: process.stdout,
11+
});
12+
13+
let N = null;
14+
let info = null;
15+
let count = 0;
16+
const data = [];
17+
18+
rl.on('line', function (line) {
19+
console.log(line);
20+
if (!N) {
21+
N = +line;
22+
} else if (N && !info) {
23+
info = line.split(' ').map((el) => +el);
24+
} else {
25+
data.push(line.split(' ').map((el) => +el));
26+
// data.push(line.split('').map((el) => +el));
27+
// data.push(line.split('').map((el) => el));
28+
// data.push(line);
29+
count += 1;
30+
}
31+
if (count === N) {
32+
rl.close();
33+
}
34+
}).on('close', function () {
35+
print(N, info, data);
36+
process.exit();
37+
});

src/grap3fruit/goorm/input2.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const print = (N, data) => {
2+
console.log(N);
3+
console.log(data);
4+
};
5+
6+
const readline = require('readline');
7+
8+
(async () => {
9+
let rl = readline.createInterface({ input: process.stdin });
10+
let N = null;
11+
let count = 0;
12+
const data = [];
13+
14+
for await (const line of rl) {
15+
if (!N) {
16+
N = +line;
17+
} else {
18+
data.push(line.split('').map((el) => +el));
19+
// data.push(line);
20+
count += 1;
21+
}
22+
if (N === count) {
23+
rl.close();
24+
}
25+
}
26+
27+
data.forEach((el) => {
28+
console.log('len: ', el.length);
29+
});
30+
31+
print(N, data);
32+
process.exit();
33+
})();
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const getMaxOddPalindrome = (word, idx) => {
2+
let max = 0;
3+
for (let i = 0; i < word.length / 2; i++) {
4+
if (word[idx - i] !== word[idx + i]) {
5+
break;
6+
}
7+
max = i * 2 + 1;
8+
}
9+
return max;
10+
};
11+
12+
const getMaxEvenPalindrome = (word, idx) => {
13+
let max = 0;
14+
if (idx < word.length - 1 && word[idx] === word[idx + 1]) {
15+
for (let i = 0; i < word.length / 2; i++) {
16+
if (word[idx - i] !== word[idx + i + 1]) {
17+
break;
18+
}
19+
max = i * 2 + 2;
20+
}
21+
}
22+
return max;
23+
};
24+
25+
const solution = (s) => {
26+
let sArr = s.split('');
27+
let answer = 0;
28+
29+
for (let i = 0; i < sArr.length; i++) {
30+
answer = Math.max(answer, getMaxOddPalindrome(sArr, i), getMaxEvenPalindrome(sArr, i));
31+
}
32+
33+
return answer;
34+
};
35+
36+
// solution('ccabcbaa');
37+
console.log(solution('baaba'));
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# 12904 가장 긴 팰린드롬 - 성공
2+
3+
## 아이디어 구현
4+
5+
첫번째 풀이
6+
7+
```
8+
const checkPD = (word) => {
9+
const wordLength = word.length;
10+
11+
for (let i = 0; i < wordLength / 2; i++) {
12+
if (word[i] !== word[wordLength - i - 1]) {
13+
return false;
14+
}
15+
}
16+
return true;
17+
};
18+
19+
const solution = (s) => {
20+
sArr = s.split('');
21+
answer = 0;
22+
23+
sArr.reduce((accumulator, currentValue, currentIndex, array) => {
24+
console.log(accumulator);
25+
console.log(accumulator.join(''));
26+
if (accumulator.length > 0 && checkPD(accumulator.join(''))) {
27+
console.log(`${currentIndex}에서 펠린드롬입니다`);
28+
answer = currentIndex;
29+
}
30+
31+
return [...accumulator, currentValue];
32+
}, []);
33+
console.log(sArr);
34+
35+
if (checkPD(sArr.join(''))) {
36+
// console.log(`${sArr.length}에서 펠린드롬입니다`);
37+
answer = sArr.length;
38+
}
39+
40+
console.log(answer);
41+
return answer;
42+
};
43+
44+
solution('abcabcdcbae');
45+
```
46+
47+
reduce써서 멋지게 풀어보려고 했지만,
48+
49+
팰린드롬이 중간에 오는 경우 못찾는다. 항상 앞에서 붙여나가기 때문 ㅠ
50+
51+
테케 `abcabcdcbae` 여기에 걸림
52+
`adcbbbbca` 이것도 안될듯.
53+
54+
---
55+
56+
한개짜리일때 쫙 찾고,
57+
58+
두개짜리일때 쫙 찾고
59+
60+
해야겠는걸.
61+
62+
근데 이러면 효율성 통과 안될거같은데.
63+
64+
위에 느낌으로 하려면, 큰거부터 찾자. 작은건 무조건 큰거까지 가야하지만 큰거는 되면 바로 끝내면 된다.
65+
66+
---
67+
68+
위에꺼는 아닌것 같아 고민하다가 떠오름.
69+
70+
하나씩 가면서 넓혀보기. 최대한 넓힌 max 리턴. << 이 방법.
71+
72+
아이디어 싸움이었다. 못떠올렸으면 으으..
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const board = [
2+
[0, 0, 0, 0, 0],
3+
[0, 0, 1, 0, 3],
4+
[0, 2, 5, 0, 1],
5+
[4, 2, 4, 4, 2],
6+
[3, 5, 1, 3, 1],
7+
];
8+
const moves = [1, 5, 3, 5, 1, 2, 1, 4];
9+
10+
function solution(board, moves) {
11+
const result = [];
12+
let answer = 0;
13+
14+
moves.reduce((acc, move) => {
15+
for (let i = 0; i < board.length; i++) {
16+
if (board[i][move - 1] === 0) {
17+
continue;
18+
}
19+
20+
if (acc.length > 0) {
21+
const prev = acc.pop();
22+
23+
if (prev === board[i][move - 1]) {
24+
board[i][move - 1] = 0;
25+
answer += 2;
26+
return acc;
27+
}
28+
29+
acc.push(prev);
30+
}
31+
32+
acc.push(board[i][move - 1]);
33+
board[i][move - 1] = 0;
34+
return acc;
35+
}
36+
return acc;
37+
}, []);
38+
39+
console.log(board);
40+
console.log(result);
41+
return answer;
42+
}
43+
44+
console.log(solution(board, moves));

0 commit comments

Comments
 (0)