Skip to content

Commit e7f756f

Browse files
committed
codetree.ai 삼성전자 2025 상반기 오후 2번 문제 여왕 개미
문제 링크: https://www.codetree.ai/ko/frequent-problems/all/problems/queen-ant
1 parent 204f122 commit e7f756f

4 files changed

Lines changed: 88 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
def solve():
2+
houses_pos = [0] # 여왕 개미의 집
3+
houses_deleted = [False] # 여왕 개미의 집
4+
5+
Q = int(input())
6+
7+
for _ in range(Q):
8+
cmds = list(map(int, input().split()))
9+
cmd = cmds[0]
10+
11+
if cmd == 100:
12+
for pos in cmds[2:]:
13+
houses_pos.append(pos)
14+
houses_deleted.append(False)
15+
elif cmd == 200:
16+
pos_new = cmds[1]
17+
houses_pos.append(pos_new)
18+
houses_deleted.append(False)
19+
elif cmd == 300:
20+
pos_deleted = cmds[1]
21+
houses_deleted[pos_deleted] = True
22+
elif cmd == 400:
23+
cnt_ant = cmds[1]
24+
25+
mn_time, mx_time = 0, 1000000000
26+
min_time = 0
27+
28+
while mn_time <= mx_time:
29+
mid_time = (mn_time + mx_time) // 2
30+
31+
intervals = 0
32+
last_pos = -1000000000
33+
34+
for idx in range(1, len(houses_pos)):
35+
if houses_deleted[idx]: # 삭제된 집인 경우 skip
36+
continue
37+
38+
crnt_pos = houses_pos[idx]
39+
40+
if crnt_pos - last_pos > mid_time:
41+
last_pos = crnt_pos
42+
intervals += 1
43+
44+
if intervals <= cnt_ant:
45+
min_time = mid_time
46+
mx_time = mid_time - 1
47+
else:
48+
mn_time = mid_time + 1
49+
50+
print(min_time)
51+
52+
if __name__ == '__main__':
53+
solve()
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
7
2+
100 5 2 4 7 8 15
3+
400 1
4+
400 2
5+
200 50
6+
400 2
7+
300 5
8+
400 3
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
13
2+
6
3+
13
4+
2
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import sys
2+
from pathlib import Path
3+
from unittest import TestCase
4+
from main import solve
5+
6+
7+
class Test(TestCase):
8+
def my_solve(self, testcase_input):
9+
sys.stdin = open(testcase_input, 'r')
10+
stdout = sys.stdout
11+
sys.stdout = open('stdout.txt', 'w')
12+
solve()
13+
sys.stdout.close()
14+
sys.stdout = stdout
15+
16+
def test_solve(self, testcase_number: str):
17+
self.my_solve('test' + testcase_number + '.txt')
18+
self.assertEqual(
19+
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
20+
Path('stdout.txt').read_text().strip())
21+
22+
def test1_solve(self):
23+
self.test_solve('1')

0 commit comments

Comments
 (0)