๐ง ๋ฐฑ์ค 1427 (๋จ์ผ ์ซ์ ๋ถ๋ฆฌํ๊ธฐ)
๐คซ solution_1427
num_str_list = list(input()) # ['5', '0', '0', '6', '1', '3', '0', '0', '9'] print(*sorted(num_str_list, reverse = True), sep = "")
2143 => 1234์ฒ๋ผ ๋ง๋ค์ด์ผ ํ๋ฏ๋ก ๋จผ์ str๋ก ๋ฐ๊ณ ์์ ๊ฐ๊ฐ์ ๋น๊ตํ๋ฉด ๋๋ค.
๐ง ๋ฐฑ์ค 2108 (ํต๊ณํ _ statistics ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉ)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ
๐ค ์ํ ํต๊ณ ๋ด์ฅํจ์ statistics (https://python.flowdas.com/library/statistics.html)
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ, ์ต๋น๊ฐ์ ๊ตฌํ๊ธฐ ์ํด countํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ, ์ด๋ก ์ธํด ์๊ฐ์ด๊ณผ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์๋์ ํต๊ณํ๊ด๋ จ statistics ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ multimode()ํจ์๋ฅผ ์ด์ฉํด ์ต๋น๊ฐ์ ๊ตฌํด์ค๋ค.
๐คซ solution_2108
import statistics as st num = [int(input()) for _ in range(int(input()))] mode =st.multimode(num) if len(mode) > 1: mode.remove(min(mode)) print(int(sum(num)/len(num))) print(round(st.median(num))) print(min(mode)) print(max(num) - min(num))
๐ง ๋ฐฑ์ค 10814,11650, 11651 (C++์ pair์ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ํด!) โ โ โ โ โ
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 1. python์ sort๋ stable ์ ๋ ฌ์ ํ๋ค.
ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก stable_sort์ด๊ธฐ์ ๋์ด ๊ธฐ์ค ์ ๋ ฌ์ ํด๋ ๊ฐ์ ํ ์์๋ ๊ทธ๋๋ก!
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 2. 2์ฐจ์ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ, ํ๋์ for๋ฌธ์ผ๋ก ์ ๊ทผํ ์ ์๋ค!
ํ์ด์ฌ์ ๋ค์๊ณผ ๊ฐ์ด 2์ฐจ์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ, ํ๋ฒ์ ์์์ ์ ๊ทผํ ์ ์๋ค.
arr = list(input().split() for _ in range(int(input()))) for x, y in arr: print(x, y) => arr[0][0], arr[0][1]
๐ค Algorithm ๊ณผ์
๊ตณ์ด int๋ก ๋ฐ์ง ์์๋ ์ด์ฐจํผ '20' < '21' ์ด๋ฏ๋ก ์ ๋ ฌํ person๋ฆฌ์คํธ๋ฅผ for๋ฌธ์ ์ด์ฉํด ์ ๊ทผํ๋ค.
์ด๋, ์ ๋ ฌํ ๋, key = lambda์์ ์ด์ฉํด a[0], ์ฆ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
๐คซ solution_10814
# ํ์ด์ฌ์ sortํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก stable์ ๋ ฌ์ ํ๋ค. person = list(input().split() for _ in range(int(input()))) # str๋ก ๋ฐ์๋ ์์๊ฐ์ int๋ก ๋ฐ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค. for x, y in sorted(person, key = lambda a: int(a[0])): print(x, y)
10814์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๊ฒฐ๐คซ solution_11650
num = [list(map(int, input().split())) for _ in range(int(input()))] # num์๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ ์ฅ๋จ # [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] # for๋ฌธ์ผ๋ก 2์ฐจ์ ๋ฆฌ์คํธ ์์ ์ถ๋ ฅ # [1, -1] [1, 1] [2, 2] [3, 3] [3, 4] for x, y in sorted(num): print(x, y)
๐คซ solution_11651
num = [list(map(int, input().split())) for _ in range(int(input()))] # ๋งจ ๋ค์ ์์ a[1]์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ ํ a[0]์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ for x, y in sorted(num, key = lambda a: (a[1], a[0])): print(x, y)
๋จ, ์ด ๋ฌธ์ ์์ ์ ์ํ ์ ์ python์ ์ ๋ ฌ์์ ๊ธฐ์ค ์ฌ๋ฌ ๊ฐ ์ธ์ธ ์ ์๋ค๋ ์ ์ด๋ค. ์์์ ์ฒ๋ผ ๋ง์ด๋ค.
# ๋งจ ๋ค์ ์์ a[1]์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ ํ a[0]์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ sorted(num, key = lambda a: (a[1], a[0])):
๐ง ๋ฐฑ์ค 18870 (๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ ๊ทผ)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 1. ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ์ฌ์ ๋กญ๋ค??
๐ค ์ด ๋ฌธ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด 512MB๋ก ์ฌ์ ๋ก์ด๋ฐ, ์ด์ ๋ํด ์ดํด๋ณผ ํ์๊ฐ ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ๋ง์ = ์์๋ฅผ ๋ฐ๋ก ์ ์ฅ(hash)ํ์ง ์์ผ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ผ ์ ์ถ
- ์์๋ง ๊ฐ๋จํ ๋น๊ตํ๋ฉด ๋๊ธฐ์ set์ผ๋ก ์ค๋ณต์ ์์ ๊ณ sort๋ฅผ ์งํํ๋ฉด ๋ ๊ฐ๋จํ ํด๊ฒฐ ๊ฐ๋ฅ.
๐ค์ฌ์ค ๋ฌธ์ ์์ ๋งํ๋ ๋ฐ๋ ๋ฑ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ๊ณผ ๋์ผ!
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 2. ๋์ ๋๋ฆฌ ์๋ฃ๊ตฌ์กฐ
๐ค Dictionary.
- key-value ํํ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ๋ก ๊ฐ๊ณผ ๋ฐ์ดํฐ์ ๋์๊ด๊ณ๋ฅผ ํํํ ๋, powerfulํ๋ค.
- ์ด๋, ํต์ฌ์ key๊ฐ์ ์ค๋ณต๋ ์ ์๋ค๋ ์ ์ด๋ฉฐ ์๋์ ์ฝ๋๋ฅผ ์์๋ก ๋ค์ด ๋ณด๊ฒ ๋ค.
# x_set์๋ [-10, -9, 2, 4] ์์๊ฐ ๋ค์ด๊ฐ์๋ set๋ฆฌ์คํธ์ด๋ค. x_dict = {x_set[i] : i for i in range(len(x_set))} #x_dict = { -10: 0, -9: 1, 2: 2, 4: 3 } # print(x_dict[-9]) # key๊ฐ์ ์ด์ฉํ value, 1 ์ถ๋ ฅ
๐ค Algorithm ๊ณผ์
1. ์ ๋ ฅ๊ฐ์ ์ ์ฅํ๋ x๋ฆฌ์คํธ์
2. x๋ฆฌ์คํธ์ ์์๋ค์ด ๊ฒน์น์ง ์๋๋ก set์ ๋ง๋ค์ด ์ ๋ ฌ์์ผ์ค๋ค.
3. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ๋ set์ index๋ฅผ ๋งตํํด์ฃผ๋ฉด ๊ทธ๊ฒ์ด ๋น๋ก์ ์์๊ฐ ๋๋ฏ๋ก
4. set_element : index์ ๋งตํ์ ์ํด ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ค๋ค.
5. ๊ทธ ํ x๋ฆฌ์คํธ๋ฅผ ๋๋ฉด์ ํด๋น ์์์ ์ผ์นํ๋ ๊ฐ๊ณผ ๋งตํํ ๋์ ๋๋ฆฌ์ value๊ฐ(์ธ๋ฑ์ค, ์์ ๊ฐ)์ ์ถ๋ ฅ
๐คซ solution_18870 (์๊ฐ์ด๊ณผ)
N = int(input()) x = list(map(int, input().split())) x_prime = [] for i in x: cnt = 0 for j in set(sorted(x)): if i > j: cnt += 1 x_prime.append(cnt) print(*x_prime)
์ฒ์ ์ง ์ฝ๋๋ก ๋ฌธ์ ์ ์ ์ด์ค for๋ฌธ์ ์ด์ฉํ์ฌ if๋ฌธ์ 2๋ฒ ๋๋ฆฌ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ O(n^2)์ด๋ค.
์ด ๋ฌธํญ์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ O(nlog n)์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ๋ค.
๐คซ solution_18870N = int(input()) x = list(map(int, input().split())) x_set = sorted(list(set(x))) x_prime = [] # x_set์ [-10, -9, 2, 4]์ index๋ฅผ ๋งตํํ์ฌ ๋์ ๋๋ฆฌ๋ก(์์) # cf. ๋์ ๋๋ฆฌ๋ ํด์๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ ์ ์ฅ x_dict = {x_set[i] : i for i in range(len(x_set))} #x_dict = {-10: 0, -9: 1, 2: 2, 4: 3} # print(x_dict[-9]) # 1 ์ถ๋ ฅ for i in x: print(x_dict[i], end = " ")