2024/07/15 5

[Python] 1049번 기타줄

✏️ 문제 문제 파악min(6개입 가격)과 min(낱개 가격) 비교if min(6개입 가격) > min(낱개 가격) * 6 : 낱개로 전부 사는 게 이득if min(6개입 가격)  min(낱개 가격) * 6 : 6개 단위는 6개입으로 사는 게 이득if min(6개입 가격) 6개입을 하나 더 사는 게 이득if min(6개입 가격) > min(낱개 가격) * 남은 개수(6개 이하) : 낱개로 사는 게 이득 알고리즘그리디 알고리즘수학  코드n, m = map(int, input().split())brand = []money = 0for i in range(m): brand.append(list(map(int, input().split()))) brand.sort()min_value = min(min(s..

PS/백준 2024.07.15

[Python] 1946번 신입 사원

✏️ 문제 문제 파악처음에 문제를 이해한다고 시간을 좀 잡아먹었었다..  다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이게 무슨 말이냐면 일단 서류나 면접 둘 중에 하나라도 1등인 사람은 다른 어떤 지원자들보다 성적이 높으므로(동석차 없음) 무조건 뽑히게 된다. (한 사람이 두 개 다 1등이면 그 사람만 선발)  그럼 이제 이 1등한 사람을 기준으로 비교하면 되는데 2번째 테스트 케이스를 보면 서류 1등인 사람이 면접 4등인 걸 볼 수 있다. 그럼 면접에서는 이 사람보..

PS/백준 2024.07.15

[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/백준 2024.07.15

[Python] 1439번 뒤집기

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

PS/백준 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/백준 2024.07.15