Skip to content

Commit ae16013

Browse files
committed
93차 3번 문제풀이
2 parents 0f86390 + e8690c4 commit ae16013

24 files changed

Lines changed: 413 additions & 0 deletions

live9/test93/문제1/박희경.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
1 (st = [1]) -> 9 (st = [9]) -> 2 -> 4 (st = [9, 4])
3+
"""
4+
def solution(number, k):
5+
answer = 0
6+
number = list(map(str, number.rstrip()))
7+
8+
stack = []
9+
10+
for num in number:
11+
if not stack:
12+
stack.append(num)
13+
continue
14+
if k > 0:
15+
while stack[-1] < num: # 다음 수가 더 클 때
16+
stack.pop()
17+
k -= 1
18+
if not stack or k <= 0:
19+
break
20+
stack.append(num)
21+
22+
if k > 0:
23+
stack = stack[:-k]
24+
25+
return ''.join(stack)

live9/test93/문제1/백한결.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def solution(number, k):
2+
max_num = []
3+
4+
for i in number:
5+
while max_num and k > 0 and max_num[-1] < i:
6+
max_num.pop()
7+
k -= 1
8+
max_num.append(i)
9+
10+
answer = ''.join(max_num[:len(number) - k])
11+
12+
return answer

live9/test93/문제1/황장현.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
function solution(number, k) {
2+
let stack = [];
3+
let 제거할수 = k;
4+
5+
for (let i = 0; i < number.length; i++) {
6+
while (
7+
제거할수 > 0 &&
8+
stack.length > 0 &&
9+
stack[stack.length - 1] < number[i]
10+
) {
11+
stack.pop();
12+
제거할수--;
13+
}
14+
stack.push(number[i]);
15+
}
16+
17+
while (제거할수 > 0) {
18+
stack.pop();
19+
제거할수--;
20+
}
21+
22+
return stack.join('');
23+
}
24+
25+
// console.log(solution('1924', 2));
26+
// console.log(solution('1231234', 3));
27+
// console.log(solution('4177252841', 4));
28+
// console.log(solution('10', 1)); // 1
29+
// console.log(solution('9876543214', 4)); // 987654
30+
console.log(solution('333222111', 4)); // 33322

live9/test93/문제2/박희경.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
def solution(name):
2+
answer = 0
3+
4+
# 기본 최소 좌우 이동 횟수는 길이 - 1
5+
min_move = len(name) - 1
6+
7+
for i, alpha in enumerate(name):
8+
answer += min(ord(alpha) - ord('A'), ord('Z') - ord(alpha) + 1)
9+
10+
# 연속된 A의 끝나는 위치 찾기
11+
next = i + 1
12+
while next < len(name) and name[next] == 'A':
13+
next += 1
14+
15+
min_move = min([
16+
min_move, # 기존 오른쪽으로 끝까지 가는 경우
17+
2 * i + len(name) - next, # 처음부터 i까지 갔다가 뒤로 "돌아가기(*2)"
18+
i + 2 * (len(name) - next) # A 지나서 끝까지 갔다가 "돌아오기(*2)"
19+
])
20+
21+
answer += min_move
22+
return answer

live9/test93/문제2/백한결.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
def solution(name):
2+
count = 0
3+
4+
for a in name:
5+
count += min(ord(a) - ord('A'), ord('Z') - ord(a) + 1)
6+
7+
min_move = len(name) - 1
8+
9+
for i in range(len(name)):
10+
next = i + 1
11+
while next < len(name) and name[next] == 'A':
12+
next += 1
13+
14+
move = min(i, len(name) - next) * 2 + max(i, len(name) - next)
15+
min_move = min(min_move, move)
16+
17+
count += min_move
18+
19+
return count
20+
21+
22+
print(solution("JEROEN"))

live9/test93/문제2/황장현.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
function solution(name) {
2+
let moveCount = 0;
3+
let minMove = name.length - 1;
4+
5+
for (let i = 0; i < name.length; i++) {
6+
const char = name[i];
7+
moveCount += Math.min(char.charCodeAt(0) - 65, 91 - char.charCodeAt(0));
8+
9+
let nextIdx = i + 1;
10+
while (nextIdx < name.length && name[nextIdx] === 'A') {
11+
nextIdx++;
12+
}
13+
14+
minMove = Math.min(
15+
minMove,
16+
i * 2 + (name.length - nextIdx),
17+
i + 2 * (name.length - nextIdx)
18+
);
19+
}
20+
21+
return moveCount + minMove;
22+
}
23+
24+
// console.log(solution('JEROEN'));
25+
// console.log(solution('JAAAN'));
26+
// console.log(solution('JAAAKAN'));
27+
console.log(solution('AAABAAAAB'));

live9/test93/문제3/박희경.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
def solution(routes):
2+
answer = 0
3+
camera = float('-inf')
4+
5+
routes.sort(key=lambda x: x[1])
6+
for i in range(len(routes)):
7+
if routes[i][0] > camera: # 진입 지점이 카메라보다 뒤에 있는 경우 카메라 추가해야 함
8+
answer += 1
9+
camera = routes[i][1] # 진출 지점에 카메라 설치
10+
return answer

live9/test93/문제3/백한결.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def solution(routes):
2+
routes.sort(key=lambda x: x[1])
3+
4+
count = 0
5+
camera = -30001
6+
7+
for i in range(len(routes)):
8+
if routes[i][0] > camera:
9+
count += 1
10+
camera = routes[i][1]
11+
12+
return count

live9/test93/문제3/황장현.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function solution(routes) {
2+
routes.sort((a, b) => a[1] - b[1]);
3+
4+
let cameraCount = 0;
5+
let lastCameraPos = -30001;
6+
7+
for (let route of routes) {
8+
let [enter, exit] = route;
9+
10+
if (enter > lastCameraPos) {
11+
cameraCount++;
12+
lastCameraPos = exit;
13+
}
14+
}
15+
16+
return cameraCount;
17+
}
18+
19+
console.log(
20+
solution([
21+
[-20, -15],
22+
[-14, -5],
23+
[-18, -13],
24+
[-5, -3],
25+
])
26+
);

live9/test94/문제1/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)