
백준 알고리즘 파이썬(Python) 20365번 블로그2
2021. 6. 1. 01:11
Algorithm
이 문제의 핵심은 cnt 즉 카운트 값을 2개 지정한다는 것이다. 카운트 값을 2개 지정하는 이유는 내가 가장 먼저 파란색으로 다 칠할지, 빨간색으로 다 칠할지를 구분해서 카운트를 세주는 것이다. 그 뒤에 연속해서 다른색이 나오는 경우만 조심해서 풀어주면 된다. n = int(input()) arr = list(input()) arr.append('A') # line 12와 line 21의 arr[i+1] 에서 list의 범위를 벗어나는 오류를 해결하기 위한 방법 cnt = [1] * 2 #파란색을 먼저 칠할 경우와 빨간색을 먼저 칠할 경우의 수를 다 파악하기 위해 cnt를 2개 지정 for i in range(n): #먼저 다 파란색으로 칠했다고 가정한 경우 if arr[i] == 'B': contin..

백준 알고리즘 파이썬(Python) 20300번 서강근육맨
2021. 5. 27. 12:26
Algorithm
리스트를 입력받아 내림차순으로 정리한 것과 오름차순으로 정리한 것의 각 요소들의 합중 최댓값이 답이다. n이 짝수일때는 크게 문제가 되지 않는데 n이 홀수라면 생각을 좀 해야 한다. 내가 생각한 방법은 n이 홀수라면 운동기구를 하루만 사용하는 날 근손실이 최대로 일어나는 기구를 사용해야 한다. 이번 코드에는 zip이라는 함수를 처음으로 사용해보았다. n = int(input()) muscle_re = list(map(int,input().split())) muscle_re.sort(reverse = True) # 내림차순으로 정리 muscle = sorted(muscle_re, reverse = False) # 오름차순으로 정리 if n%2 == 0: #n이 짝수일때 result = 0 day_muscl..

백준 알고리즘 파이썬(Python) 20115번 에너지드링크
2021. 5. 14. 15:49
Algorithm
그리디 문제를 풀다보면 정렬을 어떻게 하느냐가 문제의 Key인 경우가 많다 이 문제 역시 그러하다. 이 문제의 핵심은 에너지 드링크의 양을 내림차순으로 정렬하고 가장 양이 많은 에너지 드링크를 제외하고 2번째 부터 쭉 절반으로 나눈 값을 더해 result를 갱신해주는 것이다 n = float(input()) k = list(map(int, input().split())) #에너지 드링크 양을 k 리스트에 저장 k.sort(reverse = True) #에너지 드링크 양 내림차순으로 정렬 result = 0 count = 1 for i in k: if count == 1: #첫번째 에너지 드링크는 그대로 result 값에 넣어준다 count += 1 result += i continue else: resu..

백준 알고리즘 파이썬(Python) 11508번 2+1 세일
2021. 5. 14. 13:42
Algorithm
크게 어렵지 않은 문제다. 조금만 고민해 보면 입력받은 유제품의 가격을 큰 순서대로 내림차순으로 정렬한 다음 3의 배수의 자리의 있는 숫자를 제거해주고 다 더해주면 답이라는 것을 알 수 있다 이 문제의 핵심은 내림차순으로 정렬 후 3의 배수 자리의 숫자를 없애준다 이다 n = int(input()) cost = [] #유제품 가격 리스트 for i in range(n): a = int(input()) cost.append(a) cost.sort(reverse = True) #가격을 내림차순으로 정렬 count = 1 #리스트 안의 순서를 세주는 count 값 1로 지정 result = 0 for i in cost: if count%3 != 0: result += i count += 1 else: #만약 ..

백준 알고리즘 파이썬(Python) 1758번 알바생 강호
2021. 5. 9. 21:25
Algorithm
이 문제의 핵심은 팁을 받은 순서를 큰 순서대로 리스트에 배열하는것 이다 만약 1, 1, 9, 9 가 주어진다 생각해보면 작은 숫자 즉 1이 줄의 뒤로가면 어느순간 돈 - (반은 등수 - 1) 의 값이 음수가 나온다. 따라서 1은 2번째 부터는 어디에 줄을 서든 어차피 팁은 0원이다 하지만 큰 숫자는 뒤로 갈수록 원래 주려고 했던 팁이 줄어든다. 즉 팁을 최대로 받을 수 있는 최적의 방법에서 멀어진다는 얘기다. 그리디 알고리즘은 최적의 결과값을 도출해내는게 목적이다. n = int(input()) #사람의 수 N이 주어짐 tip = [] #tip을 넣을 리스트 생성 for _ in range(n): a = int(input()) tip.append(a) tip.sort(reverse = True) #줄 ..