Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions INSEA-99/week03/10816_숫자_카드_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Dict 풀이 시간:
# 시간(ms) : 720
# 공간(KB) : 266652
#
# Counter 풀이 시간:
# 시간(ms) : 672
# 공간(KB) : 266708
#
# 공유 :
# - Counter는 collections 모듈에 포함된 dict의 특수 버전. 내부는 사실상 dict 기반이지만, 추가 메서드와 연산자 지원


import sys
from collections import Counter
input = sys.stdin.readline


# 1. dictionary 사용
input()
nums = list(input().strip().split()) # 숫자 카드 입력 받기

dic = {}
for n in nums : # dictionary로 입력 받은 숫자 카드 개수 카운드
dic[n] = dic.get(n, 0) + 1

input()
ans = []
for m in list(input().strip().split()) : # dic에서 숫자 카드 개수 가져오기
ans.append(dic.get(m, 0))
print(*ans)



# 2. Counter 사용
input()
nums = list(input().strip().split()) # 숫자 카드 입력 받기
counter = Counter(nums)

input()
ans = []
for m in list(input().strip().split()) : # dic에서 숫자 카드 개수 가져오기
ans.append(counter[m])
print(*ans)

8 changes: 8 additions & 0 deletions INSEA-99/week03/1181_단어_정렬.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 시간(ms) : 156
# 공간(KB) : 115768

import sys
input = sys.stdin.readline

nums = set([sys.stdin.readline().strip() for _ in range(int(input()))])
print(*sorted(nums, key=lambda x : (len(x), x)), sep='\n')
28 changes: 28 additions & 0 deletions INSEA-99/week03/1920_수_찾기.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 시간(ms) : 216
# 공간(KB) : 137716
#
# 공유 :
# - 파이썬에서 문자(str)와 정수(int)는 비교 방식이 다르므로 정렬 시 주의
# ex)
# 2 < 10
# '2' > '10' # 문자열 "2"의 첫 글자 '2'와 "10"의 첫 글자 '1'을 비교

import sys
input = sys.stdin.readline

def bs(arr, target) :
left = 0
right = len(arr) - 1

while(left <= right) :
mid = (left + right) // 2
if(arr[mid] < target) : left = mid + 1
elif(arr[mid] > target) : right = mid - 1
else : return 1
return 0

input()
nums = sorted(list(map(int, input().strip().split())))
input()
for t in list(map(int, input().strip().split())):
print(bs(nums, t))
22 changes: 22 additions & 0 deletions INSEA-99/week03/2750_수_정렬하기.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# 시간(ms) : 92
# 공간(KB) : 109412
#
# 공유 :
# 1) * 는 리스트, 튜플, 문자열 등의 요소를 함수 인자로 풀어서 전달
# ex)
# nums = [1, 2, 3]
# print(*nums) = print(1, 2, 3)
#
# 2) print()의 sep 매개변수 (defult = ' ')
# ex)
# print('a', 'b', 'c')
# -> 'a' 'b' 'c'
# print('a', 'b', 'c', sep='!')
# -> 'a'!'b'!'c'


import sys
input = sys.stdin.readline

nums = [int(sys.stdin.readline().strip()) for _ in range(int(input()))]
print(*sorted(nums), sep='\n')