diff --git "a/INSEA-99/week04/1072_\352\262\214\354\236\204.py" "b/INSEA-99/week04/1072_\352\262\214\354\236\204.py" new file mode 100644 index 0000000..5e41c0b --- /dev/null +++ "b/INSEA-99/week04/1072_\352\262\214\354\236\204.py" @@ -0,0 +1,19 @@ +# pypy3 +# 시간(ms) : 88 +# 공간(KB) : 108384 + +import sys +input = sys.stdin.readline +MAX = 1000000000 + +def bs(left, right, x, y, z) : + mid = (left + right) // 2 # 추가 게임 횟수 + while (left <= right) : + if ((y + mid) * 100 // (x + mid) <= z) : left = mid + 1 # 초기승률이 추가게임승률보다 크거나 같은 경우 업데이트 + else : right = mid - 1 # 초기승률이 추가게임승률보다 작은 경우 업데이트 + mid = (left + right) // 2 + return mid + 1 + +x, y = map(int, input().strip().split()) # 입력 받기 +z = y * 100 // x +print(-1 if z >= 99 else bs(0, MAX, x, y, z)) \ No newline at end of file diff --git "a/INSEA-99/week04/1302_\353\262\240\354\212\244\355\212\270\354\205\200\353\237\254.py" "b/INSEA-99/week04/1302_\353\262\240\354\212\244\355\212\270\354\205\200\353\237\254.py" new file mode 100644 index 0000000..c4b5bba --- /dev/null +++ "b/INSEA-99/week04/1302_\353\262\240\354\212\244\355\212\270\354\205\200\353\237\254.py" @@ -0,0 +1,14 @@ +# 시간(ms) : 104 +# 공간(KB) : 110064 +# +# 공유 : +# - counter는 내부적으로 dictionary로 구현됨 +# - counter['a']는 dict에서 'a'의 개수를 반환 + +import sys +from collections import Counter +input = sys.stdin.readline + +books = [input().strip() for _ in range(int(input().strip()))] +counter = Counter(books) +print(sorted(counter, key=lambda x : (-counter[x], x), reverse=True)[-1]) \ No newline at end of file diff --git "a/INSEA-99/week04/1431_\354\213\234\353\246\254\354\226\274_\353\262\210\355\230\270.py" "b/INSEA-99/week04/1431_\354\213\234\353\246\254\354\226\274_\353\262\210\355\230\270.py" new file mode 100644 index 0000000..c9724fa --- /dev/null +++ "b/INSEA-99/week04/1431_\354\213\234\353\246\254\354\226\274_\353\262\210\355\230\270.py" @@ -0,0 +1,36 @@ +# pypy3 +# 시간(ms) : 92 +# 공간(KB) : 109544 +# +# Python3 +# 시간(ms) : 40 +# 공간(KB) : 32412 +# +# 공유 : +# 빠른 입출력 + 내장 함수 (정렬, math 등) +# → Python3 추천 + +# 루프 많고 연산-heavy (단순 반복, 시뮬레이션) +# → PyPy3 추천 + +import sys +input = sys.stdin.readline + + +def sort_serial_nums(serial_num) : + """_summary_ + + Args: + serial_num(string) : 정렬 대상 원소 + + Returns: + 정렬 기준 반환 + 1. (오름) 길이 + 2. (오름) 원소 내 숫자 합 + 3. (오름) 사전순 + """ + sum_digits = sum(int(ch) for ch in serial_num if ch.isdigit()) + return (len(serial_num), sum_digits, serial_num) + +serial_nums = [input().strip() for _ in range(int(input().strip()))] +print(*sorted(serial_nums, key=sort_serial_nums), sep='\n') \ No newline at end of file diff --git "a/INSEA-99/week04/2805_\353\202\230\353\254\264_\354\236\220\353\245\264\352\270\260.py" "b/INSEA-99/week04/2805_\353\202\230\353\254\264_\354\236\220\353\245\264\352\270\260.py" new file mode 100644 index 0000000..367f454 --- /dev/null +++ "b/INSEA-99/week04/2805_\353\202\230\353\254\264_\354\236\220\353\245\264\352\270\260.py" @@ -0,0 +1,30 @@ +# pypy3 +# 시간(ms) : 460 +# 공간(KB) : 258500 + +import sys +input = sys.stdin.readline + +def count(h): # h미터로 자르고 남은 나무 길이 합 구하기 + n = 0 + for tree in trees: + if tree-h > 0: + n+= tree-h + return n + +def bs(N): + left = 0 + right = trees[-1] + mid = right // 2 + + while left <= right: + m = count(mid) + if m < N: right = mid-1 # 가져가야하는 길이보다 적은 경우 + elif m >= N: left = mid+1 # 가져가야하는 길이보다 많거나 같은 경우 (최대 H를 구해야하므로 중지하지 않고 진행) + mid = (left+right)//2 + return mid + + +k, N = map(int, input().strip().split()) +trees = sorted(list(map(int, input().strip().split()))) +print(bs(N)) \ No newline at end of file