Skip to content

Commit 984c47d

Browse files
authored
Merge pull request #13 from team-mate-algorithm/INSEA-99/week03
Insea 99/week03
2 parents cac31d3 + 15cebb1 commit 984c47d

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Dict 풀이 시간:
2+
# 시간(ms) : 720
3+
# 공간(KB) : 266652
4+
#
5+
# Counter 풀이 시간:
6+
# 시간(ms) : 672
7+
# 공간(KB) : 266708
8+
#
9+
# 공유 :
10+
# - Counter는 collections 모듈에 포함된 dict의 특수 버전. 내부는 사실상 dict 기반이지만, 추가 메서드와 연산자 지원
11+
12+
13+
import sys
14+
from collections import Counter
15+
input = sys.stdin.readline
16+
17+
18+
# 1. dictionary 사용
19+
input()
20+
nums = list(input().strip().split()) # 숫자 카드 입력 받기
21+
22+
dic = {}
23+
for n in nums : # dictionary로 입력 받은 숫자 카드 개수 카운드
24+
dic[n] = dic.get(n, 0) + 1
25+
26+
input()
27+
ans = []
28+
for m in list(input().strip().split()) : # dic에서 숫자 카드 개수 가져오기
29+
ans.append(dic.get(m, 0))
30+
print(*ans)
31+
32+
33+
34+
# 2. Counter 사용
35+
input()
36+
nums = list(input().strip().split()) # 숫자 카드 입력 받기
37+
counter = Counter(nums)
38+
39+
input()
40+
ans = []
41+
for m in list(input().strip().split()) : # dic에서 숫자 카드 개수 가져오기
42+
ans.append(counter[m])
43+
print(*ans)
44+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 시간(ms) : 156
2+
# 공간(KB) : 115768
3+
4+
import sys
5+
input = sys.stdin.readline
6+
7+
nums = set([sys.stdin.readline().strip() for _ in range(int(input()))])
8+
print(*sorted(nums, key=lambda x : (len(x), x)), sep='\n')

INSEA-99/week03/1920_수_찾기.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 시간(ms) : 216
2+
# 공간(KB) : 137716
3+
#
4+
# 공유 :
5+
# - 파이썬에서 문자(str)와 정수(int)는 비교 방식이 다르므로 정렬 시 주의
6+
# ex)
7+
# 2 < 10
8+
# '2' > '10' # 문자열 "2"의 첫 글자 '2'와 "10"의 첫 글자 '1'을 비교
9+
10+
import sys
11+
input = sys.stdin.readline
12+
13+
def bs(arr, target) :
14+
left = 0
15+
right = len(arr) - 1
16+
17+
while(left <= right) :
18+
mid = (left + right) // 2
19+
if(arr[mid] < target) : left = mid + 1
20+
elif(arr[mid] > target) : right = mid - 1
21+
else : return 1
22+
return 0
23+
24+
input()
25+
nums = sorted(list(map(int, input().strip().split())))
26+
input()
27+
for t in list(map(int, input().strip().split())):
28+
print(bs(nums, t))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# 시간(ms) : 92
2+
# 공간(KB) : 109412
3+
#
4+
# 공유 :
5+
# 1) * 는 리스트, 튜플, 문자열 등의 요소를 함수 인자로 풀어서 전달
6+
# ex)
7+
# nums = [1, 2, 3]
8+
# print(*nums) = print(1, 2, 3)
9+
#
10+
# 2) print()의 sep 매개변수 (defult = ' ')
11+
# ex)
12+
# print('a', 'b', 'c')
13+
# -> 'a' 'b' 'c'
14+
# print('a', 'b', 'c', sep='!')
15+
# -> 'a'!'b'!'c'
16+
17+
18+
import sys
19+
input = sys.stdin.readline
20+
21+
nums = [int(sys.stdin.readline().strip()) for _ in range(int(input()))]
22+
print(*sorted(nums), sep='\n')

0 commit comments

Comments
 (0)