코테/백준11 백준 1920 수 찾기 - 파이썬 이진 검색 : 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘import sysinput = sys.stdin.readlineN = int(input())A = list(map(int, input().split()))A.sort()M = int(input())arr = list(map(int, input().split()))isTrue = Truefor key in arr: pl = 0 pr = N - 1 isTrue = False while (pl 이진 검색을 활용해서 풀었다중앙 요소의 인덱스를 while문 안에 넣어서 pl, pr 값에 따라 계속 바뀌도록 해야하는데while문 밖에두고서는 오류를 찾지 못해 애먹었다 .. ㅎㅎ;이진검색을 하려면 정렬된 배열이 필요하기 때문에 .. 2024. 6. 25. 백준 11399번 ATM - 파이썬 import sysinput = sys.stdin.readlineN = int(input())time = [*map(int, input().split())]time.sort() # 인출하는 시간이 짧은 사람 먼저 줄세우기 sum = 0total = 0for i in range(len(time)): sum += time[i] time[i] = sum # 앞 사람 시간 + 내 시간 => i번째 사람이 걸리는 시간 total += time[i] # N명의 사람이 걸리는 총 시간의 최솟값print(total) 인출하는데 걸리는 시간이 짧은 사람이 먼저와야 누적 시간이 최소화된다.입력받은 인출 시간이 짧은 사람부터 정렬을 한 뒤에i번째 사람의 총 시간을 계산하고 (앞 사람 인출 시간 + 자신의 인출 시간).. 2024. 6. 25. 백준 11047 동전 0 - 파이썬 import sysinput = sys.stdin.readlineN, K = map(int, input().split())coins = []count = 0coins = [int(input()) for _ in range(N)]coins.sort(reverse=True)for coin in coins: count += K // coin K = K % coin if K == 0: breakprint(count)동전이 오름차순으로 입력되는데 우리는 필요한 동전 개수의 최솟값을 출력해야하기 때문에 내림차순 정렬을 한다. 1. K원을 큰 동전부터 나눈 후 몫을 count 한다.ex) 4200원이면 4200 // 1000 > 동전 4개 카운트2. K원을 큰 동전으로 나눈 나머지를 다시 반복해서 나눌 수 있도.. 2024. 6. 25. 백준 1931 회의실 배정 : 파이썬 import sysinput = sys.stdin.readlineN = int(input())time = []for i in range(N): start, end = map(int,input().split()) time.append((start, end))time.sort(key=lambda x : (x[1], x[0]))cnt = 1end = time[0][1]for i in range(1, N): if time[i][0] >= end: end = time[i][1] cnt += 1print(cnt)회의가 빨리 끝나게 되면 남은 회의 시간이 많아서 더 많은 회의를 할 수 있다.그래서 빨리 끝나는 순서대로 회의 시간을 정렬한다.time.sort(key=lambda x : (x[1], x[.. 2024. 6. 25. 1157번: 단어공부 - 파이썬 word = input().upper() # 입력 단어unique_word = list(set(word)) # 입력된 문자의 중복을 제거한 후 리스트 형으로 변환cnt = [] # 각 문자의 개수를 담을 리스트for i in unique_word: cnt.append(word.count(i)) # word 안 문자의 개수를 구함 if cnt.count(max(cnt)) > 1: # 제일 많이 사용된 알파벳의 갯수가 중복되면 print('?') # ? 출력else: # 제일 많이 사용된 알파벳의 갯수가 중복되지 않으면 print(unique_word[cnt.index(max(cnt))]) # 최댓값의 인덱스를 구한 후 word_list 인덱스 번호로 대입해서 출력# word_list와 cnt의 인덱.. 2024. 5. 14. 이전 1 2 다음