Skip to content

Commit 02ed3e0

Browse files
committed
feat: [프로그래머스][greedy] 체육복 - 배열 버전 추가
1 parent e4af6f9 commit 02ed3e0

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

ts-programmers/greedy/001_체육복.ts

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,51 @@
11
// https://school.programmers.co.kr/learn/courses/30/lessons/42862
22

33
{
4+
// 세번째 풀이 배열 버전
5+
function solution4(n: number, lost: number[], reserve: number[]): number {
6+
let answer = 0;
7+
8+
const studentArr: number[][] = [];
9+
10+
for (let i = 0; i < n; i++) {
11+
studentArr.push([i + 1, 1]);
12+
}
13+
14+
// 잃은개수 빼기
15+
for (const student of lost) {
16+
const idx = studentArr.findIndex(([num]) => num === student);
17+
if (idx !== -1) studentArr[idx][1] -= 1;
18+
}
19+
20+
// 여유분 더하기
21+
for (const student of reserve) {
22+
const idx = studentArr.findIndex(([num]) => num === student);
23+
if (idx !== -1) studentArr[idx][1] += 1;
24+
}
25+
26+
for (let i = 0; i < studentArr.length; i++) {
27+
const [, count] = studentArr[i];
28+
29+
if (count === 0) {
30+
// 왼쪽 학생
31+
if (i > 0 && studentArr[i - 1][1] === 2) {
32+
studentArr[i - 1][1] -= 1;
33+
studentArr[i][1] += 1;
34+
}
35+
// 오른쪽 학생
36+
else if (i < n - 1 && studentArr[i + 1][1] === 2) {
37+
studentArr[i + 1][1] -= 1;
38+
studentArr[i][1] += 1;
39+
}
40+
}
41+
}
42+
43+
return studentArr.filter(([, v]) => v >= 1).length;
44+
}
45+
46+
// test
47+
console.log(solution4(5, [2, 2, 2, 4], [1, 2, 3, 3, 5])); // 4
48+
449
// 세번째 풀이 - 여러 벌 도난 / 여러 벌 보유의 경우
550
// ex) lost = [2, 2, 4] / reserve = [1, 2, 3, 3, 5]
651

@@ -19,6 +64,7 @@
1964
for (let i = 1; i <= n; i++) {
2065
studentMap.set(i, 1);
2166
}
67+
console.log(studentMap);
2268

2369
// 잃은개수 빼기
2470
for (const student of lost) {
@@ -51,7 +97,7 @@
5197
}
5298

5399
// test
54-
console.log(solution3(5, [2, 2, 4], [1, 2, 3, 3, 5])); // 5
100+
// console.log(solution3(5, [2, 2, 4], [1, 2, 3, 3, 5])); // 5
55101

56102
// 두번째 풀이
57103
function solution2(n: number, lost: number[], reserve: number[]): number {

0 commit comments

Comments
 (0)