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
32 changes: 32 additions & 0 deletions 이코테 유형별 기출문제/06 정렬/국영수/준영.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
N = int(input())


arr = []
for i in range(N):
a = input().split()
arr.append((a[0], int(a[1]), int(a[2]), int(a[3])))

# 1. 국어 점수가 감소하는 순서로
# 2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
# 3. 국어, 영어 점수가 같으면 수학 점수가 감소하는 순서로
# 4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순으로

arr = sorted(arr, key=lambda x: (-x[1], x[2], -x[3], x[0]))

for i in arr:
print(i[0])


# 12
# Junkyu 50 60 100
# SangKeun 80 60 50
# Sunyoung 80 70 100
# Soong 50 60 90
# Haebin 50 60 100
# Kangsoo 60 80 100
# Donghyuk 80 60 100
# Sei 70 70 70
# Wonseob 70 70 90
# Sanghyun 70 70 80
# nsj 80 80 80
# Taewhan 50 60 90
27 changes: 27 additions & 0 deletions 이코테 유형별 기출문제/06 정렬/실패율/준영.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 전체 스테이지 수 N

# 사용자들이 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages

# 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하는 solution 함수를 작성해라

def solution(N, stages):
answer = []
failure = {}

분모 = len(stages)
for i in range(1, N+1):
분자 = stages.count(i)
print(분자)
if 분자 == 0:
failure[i] = 0
else:
failure[i] = 분자 / 분모
분모 -= 분자
answer = sorted(failure, key=lambda x: failure[x], reverse=True)
return answer


N = 5
stages = [2, 1, 2, 6, 2, 4, 3, 3]

print(solution(N, stages))
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
N = int(input())

arr = list(map(int, input().split()))

arr = sorted(arr)
print(arr[(N-1) // 2])
Empty file.
32 changes: 32 additions & 0 deletions 이코테/07 이진 탐색/떡볶이_떡_만들기/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 절단기의 길이를 이진탐색해서, 떡썰어보고, 결론 도출
# 이진 탐색 함수를 어떻게 구성해야 할까
# 절단기의 길이는 0 ~ 떡의 최대 길이
# 절반의 길이부터 설정해보고, 떡을 잘라서 m이 나오면 정답
def find(rice_cake, m, start, end):
result = 0
while start <= end:
mid = (start + end) // 2
sum = 0

# 설정한 절단기 값으로 떡을 잘라서 모두 합한 값 도출
for i in rice_cake:
if i > mid :
sum += i - mid
else:
continue

# 절단기 길이가 맞는지 확인
if sum == m:
result = mid
return result
elif sum < m:
end = mid - 1
else:
result = mid # "최대한 덜 잘랐을 때"!!!!!!!!
start = mid + 1
return None

n, m = 4, 1 #map(int, input().split())
rice_cake = [1, 2, 3, 4] #list(map(int, input().split()))

print(find(rice_cake, m, 0, max(rice_cake)))
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
N, target = list(map(str, input().split()))

arr = list(map(str, input().split()))

for i in range(len(arr)):
if arr[i] == target:
print(i+1)
23 changes: 23 additions & 0 deletions 이코테/07 이진 탐색/부품찾기/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
def find(n_list, target, start, end):
while start <= end:
mid = (start + end) // 2
if n_list[mid] == target:
return mid # return True도 맞지 않나
elif n_list[mid] > target:
end = mid - 1
else:
start = mid + 1
return None

n = 5 #int(input())
n_list = [8, 3, 7, 9, 2] #list(map(int, input().split()))
n_list.sort()
m = 3 #int(input())
m_list = [5, 7, 9] #list(map(int, input().split()))


for i in m_list:
if find(n_list, i, 0, n - 1) != None:
print("yes", end=" ")
else:
print("no", end=" ")
31 changes: 31 additions & 0 deletions 이코테/07 이진 탐색/부품찾기/준영.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
def binary_search(arr, target, start, end):
while start <= end:
mid = (start + end) // 2
# 왼쪽에 확인하는 경우
if arr[mid] > target:
end = mid - 1
# 오른쪽을 확인하는 경우
elif arr[mid] < target:
start = mid + 1
else:
return mid
return None


# 부품 N개
N = int(input())
arr1 = list(map(int, input().split()))

# 이진 탐색은 정렬된 list에서만 사용가능하기 때문에 sort
arr1.sort()

# 손님 요청 M개
M = int(input())
arr2 = list(map(int, input().split()))

for i in arr2:
result = binary_search(arr1, i, 0, N-1)
if result != None:
print("yes", end=' ')
else:
print("no", end=" ")