๐ง ๋์ ๋๋ฆฌ (Dictionary). { key : value }
๐ค ๋์ ๋๋ฆฌ ๊ฐ๋
key-value๋ฅผ ํ๋์ ์์ผ๋ก ๊ฐ๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ค๋ฅธ ์ธ์ด์์ map๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค.
์ด๋, ๋์ ๋๋ฆฌ๋ ํค๊ฐ ์ค๋ณต๋๋๊ฒ์ ํ์ฉํ์ง ์๋๋ค!
์ด๋, ๋์ ๋๋ฆฌ๋ ํค๊ฐ ์ค๋ณต๋๋๊ฒ์ ํ์ฉํ์ง ์๋๋ค!
๐ค ๋์ ๋๋ฆฌ์ ์์ฑ๊ณผ ์ญ์
dict_a['name'] = 'b'
dict_b[3] = 2
del dict_a['name'] # del a[key]
๐ค ๋์ ๋๋ฆฌ key, value์ ๋ํ ์ ๊ทผ-1
dict_a.keys() # key ๊ฐ์ฒด๋ค์ return
dict_a.values() # value ๊ฐ์ฒด๋ค์ return
dict_a.items() # key-value ์์ return
๐ค ๋์ ๋๋ฆฌ key, value์ ๋ํ ์ ๊ทผ-2. (key๋ก value์ป๊ธฐ, value๋ก key์ป๊ธฐ)
dict_a.get(key) # key์ ํด๋นํ๋ "value๊ฐ ์ถ๋ ฅ"
for i in dict_a # ๊ธฐ๋ณธ์ ์ผ๋ก for๋ฌธ์์ i๋ฅผ ํตํด key๊ฐ์ ์ฌ์ฉํ ์ ์์
for i in dict_a.values() # ๊ธฐ๋ณธ์ ์ผ๋ก for๋ฌธ์์ i๋ฅผ ํตํด value๊ฐ์ ์ฌ์ฉํ ์ ์์
for key, value in dict_a.items(): # key์ value๋ฅผ ํ๋ฒ์ ์ฌ์ฉ
for key, value in dict_a: # ์์ ๋์ผํ ์ฌ์ฉ๋ฒ
๐ถ ํ์ฉ
for i in construct.keys():
if construct[i] == n: # key์ ์ด๋ค ๊ฐ์ด n๊ณผ ๊ฐ๋ค๋ฉด
ans.append(i) # {construct[i] : i} key์ ํด๋นํ๋ value, i๋ฅผ ์ถ๊ฐ
๐ง ๋ฐฑ์ค 2798 (๋์ ๋๋ฆฌ ํ์ฉ)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 1. brute force (์์ ํ์)
์ฒ์๋ถํฐ ๋๊น์ง ๋ชจ๋ ํ์ํ๋ ๋ฐฉ๋ฒ์ brute force๋ฅผ ์ฌ์ฉํ๋ค,.
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 2. ๋์ ๋๋ฆฌ์ set
cf. ๋์ ๋๋ฆฌ ๊ฐ์ฒด์ get()ํจ์ dict.get(key, default = None) # ๋งค๊ฐ๋ณ์๋ก ๋๊ธด ๊ฐ (๊ดํธ ์์ ๊ฐ)์ด ํค์ ์ํ์ง ์์ผ๋ฉด? None ์ถ๋ ฅ getํจ์์ return๊ฐ์ ์ฒซ๋ฒ์งธ ์ธ์์ ํค๊ฐ์ด๋ค.
๐ค Algorithm ๊ณผ์
1. ์ ๋ ฅ๋ฐ์ ์ซ์ ๋ฆฌ์คํธ๋ค์์ 3๊ฐ์ ์ซ์๋ฅผ ๊ณจ๋ผ ๋ํ ๊ฐ์ set์ ์ง์ด๋ฃ๋๋ค.
2. ์ด sum_set์ ๋ํด ์ ๋ ฅ๋ M์ ๋์ง ์๋ ๊ฒ๋ค์ ๋ํด ๋์ ๋๋ฆฌ ํํ๋ก ์ธ ์ซ์์ ํฉ๊ณผ m๊ณผ์ ์ฐจ์ด๋ฅผ ์ ์ฅํ๋ค.
3. ์ด๋, ์ ์ฅํ m๊ณผ์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ ๊ฒ์ด m๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ด๋ฏ๋ก ๋ต์์ ์ ์ ์๋ค.
๐คซ solution_2798
n, m = map(int, input().split()) num = list(map(int, input().split())) sum_set = set() sum_dict = {} for i in range(n): for j in range(i+1, n): for k in range(j+1, n): sum_set.add(num[i] + num[j] + num[k]) for i in sum_set: if m - i >= 0: sum_dict[i] = m - i else: pass print(min(sum_dict, key = sum_dict.get))
๐ง ๋ฐฑ์ค 2231 (๋์ ๋๋ฆฌ ํ์ฉ)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 1. ์์ฐ์์ ์๋ฆฟ์์ ํด๋นํ๋ ์ซ์ ๊ตฌํ๊ธฐ.
# ๊ฐ ์๋ฆฟ์์ ์ซ์์ ํฉ์ ์ถ๋ ฅํ๋ ํจ์ def digit(n): if n < 10: return n else: return digit(n // 10) + digit(n % 10)
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ 2. ๋์ ๋๋ฆฌ์ ์ฌ์ฉ
construct = {} for i in range(n+1): construct[i] = i + digit(i) ans = [] for i in construct: if construct[i] == n: ans.append(i)
๐ค Algorithm ๊ณผ์
216 => 198 + 1 + 9 + 8 ... ์ด๋ฐ ๋ฐฉ์์ ๊ฑฐ์ ๋ถ๊ฐ (์ญ์ถ์ ์งํ ์ ์์ฑ์๊ฐ ์ฌ๋ฌ๊ฐ์์ ๋์ถํ ์ ์์) ๋งตํ์ ํตํด 1~N๊น์ง ๋๊ฐ์ value๋ค ์ค ์ต์ key๋ฅผ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ ๊ฒ์ด๋ค. {1:1} {2:2} ... {13:17} {14:19} {15:21} ... {198:216} ... {N:N'}
๐คซ solution_2231
n = int(input()) # ๊ฐ ์๋ฆฟ์์ ์ซ์์ ํฉ์ ์ถ๋ ฅํ๋ ํจ์ def digit(n): if n < 10: return n else: return digit(n // 10) + digit(n % 10) construct = {} for i in range(n+1): construct[i] = i + digit(i) ans = [] for i in construct: if construct[i] == n: ans.append(i) print(0) if len(ans) == 0 else print(min(ans))
๐ง ๋ฐฑ์ค 7568 (C++์ pair์ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ํด!) โ โ โ โ โ
๐คซ ํด๊ฒฐ์ ์ค๋ง๋ฆฌ. pair ์ฒ๋ผ ์ ๋ ฅ๋ฐ์ key์ value๊ฐ ๊ฒน์ณ๋ ๋๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํ์!.
for _ in range(int(input())): w, h = map(int, input().split()) person.append((w, h))
# print(person) => [(55, 185), (58, 183), (88, 186), (60, 175), (46, 155)]
๐ค Algorithm ๊ณผ์
1. ๊ฐ๊ฐ ๋ฐ์ w, h์ ๋ํด ๋ฑ์๋ 1๋ถํฐ ์์ํ๋ฏ๋ก rank = 1๋ก ์ด๊ธฐํํด์ค๋ค.
2. ์ ๋ ฅํ ๋ณ์๋ค์ ์ ์ฅํ person๋ฆฌ์คํธ์ ๋ํด
0๋ฒ์งธ ์ธ๋ฑ์ค(๋ชธ๋ฌด๊ฒ)์ 1๋ฒ์งธ ์ธ๋ฑ์ค(ํค)๊ฐ ๋ชจ๋ ํฐ ๊ฒฝ์ฐ์ rank๋ฅผ 1 ์ฆ๊ฐ์์ผ์ค๋ค.
๐คซ solution_7568
person = [] for _ in range(int(input())): w, h = map(int, input().split()) person.append((w, h)) # print(person) => [(55, 185), (58, 183), (88, 186), (60, 175), (46, 155)] for i in person: rank = 1 for j in person: if i[0] < j[0] and i[1] < j[1]: rank += 1 print(rank, end = " ")
๐ง ๋ฐฑ์ค 1436
๐ค Algorithm ๊ณผ์
1. ์ฒ์ 666์ธ ์๋ฅผ terminal๋ณ์์ ์ ์ฅ
2. n์ด 0์ด ์๋ ๋ ๊น์ง ๋ฐ๋ณตํ๋๋ฐ, ๋ฌธ์์ด terminal์ updateํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ด๋ค.
3. terminal ๋ฌธ์์ด ์์ 666์ด ๋ค์ด์๋ค๋ฉด, n์ 1๋งํผ ๊ฐ์์ํค๊ณ
4. ๋ง์ฝ n์ด 0์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ํ์ถํ๋ค.
5. ์ดํ terminal์ ๊ฐ์ 1๋งํผ ์ฆ๊ฐ์ํจ๋ค.
๐คซ solution_1436
n = int(input()) terminal = 666 while n != 0: if '666' in str(terminal): n -= 1 if n == 0: break terminal += 1 print(terminal)
๐ง ๋ฐฑ์ค 1018 (CNN ์๊ณ ๋ฆฌ์ฆ)
๐คซํด๊ฒฐ์ ์ค๋ง๋ฆฌ. CNN Algorithm (Convolution Neural Network)
CNN์์ filter๋ฅผ ์ด์ฉํด ํฉ์ฑ๊ณฑ ๊ณ์ธต์ ๋์์ฒ๋ผ 8X8์ ์ ๋ต ์ฒด์คํ์ ๋ง๋ค๊ณ
CNN์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ ์ ๋ ฅ๋ฐ์ ์ฒด์คํ์ ์ค์บํ๋ฉด์ ํ๋ฆฐ ๊ฒฝ์ฐ๋ฅผ ์นด์ดํ ํด์ ํ๋ฆฐ๊ฒฝ์ฐ์์๊ฐ ์ต์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ค CNN_Algorithm ๊ณผ์
๐คซ solution_1436
n, m = map(int, input().split()) chess = [list(input()) for _ in range(n)] ans_chess_W , ans_chess_B = [], [] for i in range(4): ans_chess_W.append('WBWBWBWB') ans_chess_W.append('BWBWBWBW') ans_chess_B.append('BWBWBWBW') ans_chess_B.append('WBWBWBWB') def wrongcount_W (x, y): cnt = 0 for i in range(8): for j in range(8): if chess[x+i][y+j] != ans_chess_W[i][j]: cnt += 1 return cnt def wrongcount_B (x, y): cnt = 0 for i in range(8): for j in range(8): if chess[x+i][y+j] != ans_chess_B[i][j]: cnt += 1 return cnt # CNN์ฒ๋ผ 8x8 size๋ก ์ฒด์คํ ์๋ฅด๊ธฐ cnt = [] for i in range(n-8 +1): for j in range(m-8 +1): cnt.append(wrongcount_W(i, j)) cnt.append(wrongcount_B(i, j)) print(min(cnt))