728x90
반응형
SMALL

2024/07 48

[Python] 10610번 30

✏️ 문제 문제 파악30의 배수가 되려면 10의 배수도 되어야 하므로 0이 없으면 10의 배수가 될 수 없다. 입력을 받은 수의 각 자리를 배열에 넣은 후 내림차순으로 정렬해 각 자리 수를 옮겨가며 푸는 코드를 짰는데 시간 초과가 나왔다 ㅠfor문을 하나 삭제하려니 코드를 어떻게 짤 지 모르겠어서 찾아봤다 ..알고보니 3의 배수를 체크하는 방법이 따로 있었던 것 .. ! (새로 알게 되었다 오히려 좋아)각 자리 수를 더해서 3으로 나눴을 때 나머지가 없으면 3의 배수랍니다.. 이를 활용해서 코드를 다시 짜니 풀렸다. 알고리즘수학그리디 알고리즘문자열정렬정수론  코드n = input()n = sorted(n, reverse=True)sum = 0if '0' not in n: # 10의 배수 확인 pr..

PS/BOJ 2024.07.15

[Python] 1439번 뒤집기

✏️ 문제 문제 파악첫 문자와 다른 문자의 덩어리 개수(?)와 문제에서 구해야 하는 행동의 최소 횟수가 같아서예제1의 경우 첫 문자인 0과 다른 1의 덩어리 개수가 1개이므로 이 11을 한 번에 바꾸면 바로 적합하게 된다. 그래서 이를 기준으로 다른 문자 덩어리(?)가 끝나는 부분을 활용하여현재 문자가 첫 문자와 다르고 and 현재 문자의 다음 문자가 첫 문자와 같으면 횟수를 +1 하는 걸로 처음에 코드를 짰다.하지만 이렇게 하게 되면 입력이 00000001로 들어올 때 예상 출력인 1이 아닌 0으로 나오게 된다.  그래서 조건을 수정하여 현재 문자가 첫 문자와 같고 and 현재 문자의 다음 문자가 첫 문자와 다르면 횟수를 +1 하는 걸로 코드를 수정하였다. 알고리즘그리디 알고리즘문자열  코드s = in..

PS/BOJ 2024.07.15

[Python] 13305번 주유소

✏️ 문제 문제 파악가격을 배열에 차례대로 넣었을 때 현재 주유소의 가격이 이전 주유소 가격보다 작으면 현재 주유소 가격으로 거리를 계속 간다고 생각하면서 코드를 짠다. 주유소 가격을 계속 비교하지만 더 저렴한 가격으로 거리를 계속 가도록 알고리즘그리디 알고리즘  코드N = int(input())length = list(map(int, input().split()))price = list(map(int, input().split()))result = 0stard = price[0]for i in range(N-1): if price[i]

PS/BOJ 2024.07.15

[Python] 1026번 보물

✏️ 문제 문제 파악배열 A를 오름차순, 배열 B를 내림차순으로 배열한 후 각각 곱해주면 제일 쉽게 해결할 수 있으나 배열 B를 재배열하면 안된다는 조건을 넣으면 생각을 좀 해야한다. 배열 A에서 최소값, 배열 B에서 최대값은 max, min 함수를 통해 가져올 수 있다. 그 후 각각의 배열에서 지우면 최소값, 최대값이 갱신되어 계속해서 뽑아낼 수 있을 것이다. 이를 활용하자! 알고리즘수학그리디 알고리즘정렬  코드 배열 B 재배열 가능N = int(input())s = 0A = list(map(int, input().split()))B = list(map(int, input().split()))A.sort()B.sort(reverse=True)for i in range(N): s += A[i]*B[i]..

PS/BOJ 2024.07.14

[Python] 1931번 회의실 배정

✏️ 문제 문제 파악시작하는 시간을 기준으로 회의실을 사용하게 된다면 예제1과 같은 경우 6시간을 사용하게 되어 최대 사용할 수 있는 회의의 최대 개수가 되지 않는다. 그럼  끝나는 시간을 기준으로 회의실을 사용하면사용 중인 회의의 끝나는 시간이 다른 회의의 시작하는 시간과 같거나 작으면 회의실을 또 사용할 수 있게 되므로 이 조건을 기준으로 코드를 짜면 된다. 알고리즘그리디 알고리즘정렬  코드N = int(input())meetings = []result = 0for i in range(N): start, end = map(int, input().split()) meetings.append((end, start))meetings.sort() # end 시간을 기준으로 오름차순 배열# print(..

PS/BOJ 2024.07.14

[Python] 1541번 잃어버린 괄호

✏️ 문제 문제 파악- 기호를 기준으로 나누어서 나눈 값끼리 다 더해주면 - 기호와 붙었을 때 최대로 빼게 되므로 split() 함수를 통해 - 기호를 기준으로 나누어준다.  예제1 같은 경우 + 기호 때문에 숫자 배열에 넣을 수 없으므로 배열에 집어넣으면 ['55', '50+40'] 와 같이 되는데 문자열 내에 + 기호가 있으면 + 기호를 기준으로 나누어 숫자로 타입을 바꾼 후 두 개의 합을 배열에 다시 넣어주고문자열 내에 + 기호가 없으면 그냥 숫자로 타입을 바꾼 후 배열에 다시 넣어준다. 그 후 배열[0] 값에서 뒷 배열의 값을 전부 빼주면 된다. 알고리즘수학그리디 알고리즘문자열파싱  코드str1 = input().split('-')for i in range(len(str1)): if '+' in..

PS/BOJ 2024.07.14

[Python] 2217번 로프

✏️ 문제 문제 파악로프가 버틸 수 있는 중량을 내림차순으로 정렬하면 뒤에 있는 중량은 앞에 있는 중량까지 들 수 없으므로 뒤에 있는 중량을 기준으로 최대 중량을 계산하게 된다. 예제1과 같은 경우 로프가 2개가 있는데 각각 최대 10, 15 중량을 버틸 수 있다.로프 1개만 사용한다면 최대 15만 버틸 수 있는데 로프 2개를 사용한다면 각각 10, 10(최대 15를 들 수 있는 로프를 10까지만 사용하게 됨)으로 최대 20을 버틸 수 있게 된다. 알고리즘수학그리디 알고리즘정렬  코드N = int(input())m = []for i in range(N): m.append(int(input()))m.sort(reverse=True)result = []for j in range(N): result.app..

PS/BOJ 2024.07.14
728x90
반응형
LIST