01-6. 그리디 알고리즘 복습

ji-vvon·2021년 7월 4일
2

알고리즘(파이썬)

목록 보기
6/41

이번주에 풀었던 문제 중 헷갈리거나 어려웠던 문제들 복습!

📝문제1. 모험가 길드 문제

- 코드💻

n = int(input())
glist = list(map(int, input().split()))
glist.sort()

num = 0
group = 0

for i in range(n):
    num += 1
    if num >= i:
        group += 1
        num = 0

print(group)

- 과정📖

간단한(??) 문제라 그런지 확실히 그 과정을 한 번 공부하고 푸니 이전보다는 수월하게 느껴졌다. 그러나 시간이 지나면 잘 기억이 안날 것 같기도 하다.. 그래도 풀어서 다행,,!


📝문제2. 문자열 뒤집기

- 코드💻

s = input()
count0 = 0
count1 = 0

#현재 s에 문자열로 저장된 상황이므로 1이 아니라 '1'
if s[0] == '1':
    count0 += 1
else:
    count1 += 1

for i in range(len(s)-1):
    if s[i] != s[i+1]:
        if s[i+1] == '0':
            count1 += 1
        else:
            count0 += 1

print(min(count0, count1))

- 과정📖

해결과정을 또 떠올리지 못했다,, 뭔가 이해가 안갔는데, 그리면서 풀어보니 무슨 의미인지 이해가 간다!


📝문제3. 만들 수 없는 금액

- 코드💻

n = int(input())
clist = list(map(int, input().split()))
clist.sort()
m = 1

for i in clist:
    if m < i:
        break
    m += i

print(m)

- 과정📖

갑자기 어떻게 이렇게 되는지 모르겠어서 이런 식으로 이해하며 풀었다,,! 그때그때 완벽하게 이해하며 넘어가야겠다..


📝문제4. 무지의 먹방 라이브

- 코드💻

코드를 입력하세요

- 과정📖


📝문제5. 백준 11047번

- 코드💻

n, k = map(int, input().split())
clist = []
for i in range(n):
    clist.append(int(input()))
clist.sort(reverse=True)

count = 0

for i in clist:
    if k == 0:
        break
    count += k // i
    k %= i

print(count)

- 과정📖

풀때마다 헷갈려서 다시 풀어보았다!! '역순 정렬 + 0이 될 때까지 나누기'


📝문제6. 백준 2839번

- 코드💻

n = int(input())
count = 0

while n >= 0:
    if n % 5 == 0:
        count += n // 5
        break
    n -= 3
    count += 1

else:
    count = -1
    
print(count)

- 과정📖

최근에 푼 문제인데도 또 헷갈렸다,,! 그래도 한 번 이해하니 원리는 금방 떠올려서 풀어낼 수 있었다.


📝문제7. 백준 1541번

- 코드💻

alist = input().split('-')
sum = 0

for i in alist[0].split('+'):
    sum += int(i) #i를 int로 변환해야 하는 것 주의

for i in alist[1:]:
    for k in i.split('+'):
        sum -= int(k)

print(sum)

- 과정📖

이 문제도 한 번 이해하니 그 원리는 잘 파악이 갔지만 세부적인 요소까지는 잘 떠올리지 못했다. 그래도 뭔가 다음에 또 하면 완벽하게 풀 수 있을 것 같다.


📝문제8. 백준 1931번

- 코드💻


무지의 먹방 라이브회의실 문제는 아이패드로 정리해서 다시 올리려고 한다,,!

3개의 댓글

comment-user-thumbnail
2021년 7월 4일

안녕하세요, 김덕우입니다! 많은 문제를 정리하셨네요, 수고해셨습니다! 저도 웃음님처럼 손코딩을 해봐야겠어요, 나중에 추가로 아이패드로 정리해서 올리시면 확인하러 오겠습니다!! 다음주도 화이팅입니다~~~

답글 달기
comment-user-thumbnail
2021년 7월 4일

안녕하세요 알고리줌입니다.
한주 문제를 다시 풀어보다니 멋쟁이네요.
웃음표정님은 코드에서 점점 발전하시는게 눈에 보입니다!! 그리디 한 주 수고하셨습니다!

답글 달기
comment-user-thumbnail
2021년 7월 5일

거의 모든 문제를 다시 풀어보셨군요! 기억이 오래도록 남고 확실히 이해하고 넘어갈 수 있는 방법인것 같아요!
한주동안 고생하셨습니다
오늘도 파이팅!

답글 달기