Skip to content

Commit ad9b4c0

Browse files
committed
백준 18870번 좌표 압축
문제 링크: https://www.acmicpc.net/problem/18870
1 parent 50a4bef commit ad9b4c0

File tree

6 files changed

+65
-0
lines changed

6 files changed

+65
-0
lines changed

백준 18870번 좌표 압축/main.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import copy
2+
import sys
3+
from typing import List
4+
5+
6+
def solve():
7+
N = int(sys.stdin.readline().strip())
8+
dt: List[int] = list(map(int, sys.stdin.readline().strip().split(' ')))
9+
dp: List[int] = [0 for _ in range(len(dt))]
10+
answer: List[int] = [0 for _ in range(len(dt))]
11+
dt_sort = copy.deepcopy(dt)
12+
dt_sort.sort()
13+
dict = {}
14+
15+
for i in range(len(dt)):
16+
if i == 0:
17+
dp[i] = 0
18+
dict[dt_sort[i]] = dp[i]
19+
else:
20+
if dt_sort[i - 1] < dt_sort[i]:
21+
dp[i] = dp[i-1] + 1
22+
else: # dt_sort[i - 1] == dt_sort[i]:
23+
dp[i] = dp[i-1]
24+
25+
dict[dt_sort[i]] = dp[i]
26+
27+
for i in range(len(dt)):
28+
answer[i] = dict[dt[i]]
29+
30+
print(' '.join(list(map(str, answer))))
31+
32+
if __name__ == '__main__':
33+
solve()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
5
2+
2 4 -10 4 -9
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2 3 0 3 1
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
6
2+
1000 999 1000 999 1000 999
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1 0 1 0 1 0
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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')
24+
25+
def test2_solve(self):
26+
self.test_solve('2')

0 commit comments

Comments
 (0)