728x90
반응형
SMALL

BOJ 117

[Python] 2776번 암기왕

✏️ 문제문제 파악이 문제는 이분 탐색을 써서 풀 때 함수를 안쓰면 시간 초과가 뜬다 .. (나만 그런가) 그리고 출력이 수첩2에 있는 숫자를 기준으로 1, 0 출력이 되므로 수첩2는 정렬하면 안된다. 수첩1을 정렬하고 수첩1의 요소를 가지고 이분 탐색을 하면 쉽게 풀 수있다. 알고리즘자료 구조정렬이분 탐색해시를 사용한 집합과 맵  코드import sysinput = sys.stdin.readlinedef bs(start, end, note1, i): while start note2[i]: end = mid - 1 else: start = mid + 1 return 0 for _ in range(int(input())): n = int(input()) ..

PS/BOJ 2024.07.26

[Python] 7795번 먹을 것인가 먹힐 것인가

✏️ 문제 문제 파악처음에는 a 배열을 기준으로 이분 탐색을 하려했는데 생각해보니 a 배열의 각 요소가 b 배열의 요소보다 큰 지 안 큰 지에 대해서 정답을 구하는 것이므로 b 배열을 기준으로 이분 탐색을 하는 것이 맞다!이분 탐색을 하기 위해선 배열이 정렬되어 있어야한다. 위의 예시를 보면 쌍의 개수는 b 배열의 인덱스+1 한 값과 같다는 걸 알 수 있다.while ... if b[mid]  또한 큰 쌍의 개수를 구하므로 end + 1을 해주어야 한다. 알고리즘두 포인터정렬이분 탐색  코드for _ in range(int(input())): n,m = map(int, input().split()) a = sorted(list(map(int, input().split()))) b = sorted..

PS/BOJ 2024.07.26

[Python] 2805번 나무 자르기

✏️ 문제 문제 파악이분 탐색을 사용해야 하는 거의 대표적인 문제!!!!!이분 탐색을 안 사용하면 보통.. 아니 대개 "시간 초과" 가 뜬다... ^^ 알고리즘이분 탐색매개 변수 탐색 코드n, m = map(int, input().split()) trees = list(map(int, input().split())) def binary_search(trees, target): left, right = 0, max(trees) while left mid: total += h - mid if total     ⭐️ 이분 / 이진 탐색에 대해 잘 모른다면?2024.07.25 - [알고리즘] - [알고리즘] 이분 / 이진 탐색 (Binary Search) 알고리즘

PS/BOJ 2024.07.25

[Python] 20115번 에너지 드링크

✏️ 문제 문제 파악양이 적은 에너지 드링크를 버리는 방향으로 하는 게 최대의 에너지 드링크 양을 만들 수 있다.그래서 에너지 드링크를 담은 배열을 오름차순 정렬한 후 마지막에 있는 양이 제일 많은 에너지 드링크를 버리지 않는 에너지 드링크로 해서 풀면 쉽게 풀 수있다. 알고리즘그리디 알고리즘 코드n = int(input())drinks = list(map(int, input().split()))drinks.sort()total = drinks[n-1]for i in range(n-1): total += drinks[i]/2print(total)

PS/BOJ 2024.07.25

[Python] 3135번 라디오

✏️ 문제 문제 파악주파수 A에서 B로 가기 위해서 버튼을 누르는 경우는 다음과 같이 2가지가 있다.주파수 A에서 1MHz 단위로 B로 가는 방법: 버튼수 = abs(A-B)주파수 A에서 미리 지정된 주파수로 간 후 B로 가는 방법: 버튼수 = abs((미리 지정된 주파수)-B)+1(여기서 +1 은 미리 지정된 주파수로 가는 버튼수) 알고리즘그리디 알고리즘수학 코드a,b = map(int, input().split())n = int(input())freq = []freq.append(abs(a-b))for i in range(n): freq.append(abs(int(input())-b)+1)print(min(freq))

PS/BOJ 2024.07.25

[Python] 13413번 오셀로 재배치

✏️ 문제 문제 파악작업은 두 가지가 있다.배치된 말 중 임의의 2개의 말을 골라 서로의 위치를 바꾼다.말 1개를 들어 뒤집어 놓아 색상을 변경한다. 나는 다음과 같이 풀었다. if 같은 위치에 있는 문자가 다르다면 if 처음이라면 save 변수 = 초기 상태 문자열의 해당 문자를 저장 else 처음이 아니라면 2번 작업을 해야 하므로 작업 횟수 +1 save 변수 초기화else 같은 위치에 있는 문자가 같다면 if 같은 데 save 변수에 저장되어 있는 값이 있다면 1번 작업을 해야 하므로 작업 횟수 +1 save 변수 초기화근데 자꾸 틀렸다고 나와서ㅠ 결국 못풀었다.. 반례가 뭘까...,.,.?다른 분들 푼 걸 보니 다른 수가 많은 문자의 개수가 정답이 된다는 점을 가지고 푸셨었다. 알고..

PS/BOJ 2024.07.24

[Python] 1817번 짐 챙기는 숌

✏️ 문제 문제 파악나는 다음과 같이 풀었다. m의 값을 어딘가(max_m)에 저장if 책의 무게 최대 무게 최대 무게 = max_m 상자를 새로 사용해야 하므로 상자 개수 +1if 최대 무게 == 0 최대 무게 = max_m예제로 있던 문제는 다 잘나오는데 제출하면 1%에서 계속 틀렸었다.. 반례...다른 분은 현재 박스에 넣어져 있는 무게 + 넣을 책의 무게를 최대 무게와 비교하며 풀었었다.알고리즘은 이게 더 간편한 듯! 알고리즘그리디 알고리즘구현  코드내가 푼 틀린 코드n,m = map(int, input().split())box = 0if n != 0: book = list(map(int, input().split())) max_m = m for i in range(n): if ..

PS/BOJ 2024.07.24
728x90
반응형
LIST