CS/Coding Test

[ 스터디 ] 그리디 + 구현 실전 모의 코딩 테스트

all-young 2022. 2. 10. 01:11
728x90
더보기

스터디 친구들이 문제 가져오고, 제한 시간 내에 문제 푸는 방식으로 진행

 


 

1. 동전 더하기

1-1) 문제

 

1-2) 내 코드

n, k = map(int, input().split())

lst = []
count = 0

for i in range(n):
    coin = int(input())
    lst.append(coin)

lst.sort(reverse=True)

while(k != 0):
    for i in range(0,n):
      q = k // int(lst[i])
      k -= int(lst[i])*q
      count += q

print(count)

 


 

2. 연속 부분 합의 최댓값 구하기 2

2-1) 문제

 

2-2) 내 코드

근데 사실 밑에 있는 코드는 자꾸 잘못된 값 출력해서 수정 해야함 ㅜ

n = int(input())
data = list(map(int, input().split()))

count = 0
start = 0 
end = 0
answer = 0

while(count != n+1):
    count += 1
    start = 0 
    end = count - 1
    result = 0

    while( end != n):
      for i in range(start, end + 1):
          result += data[i]
      answer = max([answer, result])
      start += 1
      end += 1

print(answer)

 

2-3) 답안 코드

잘 모르겠어서 구글링해서 답안 코드 찾았다.

답안 코드는 c언어로 되어 있어서, 파이썬으로 수정해서 다시 코드를 작성했다.

출처: https://studyposting.tistory.com/16

size = 7
arr = [4, -1, 2, -19, 3, 6, 9]

ret = 0
psum = 0

for i in range(size):
      psum = max([psum, 0]) + arr[i]
      ret = max([psum, ret])

print(ret)

 

사실 코드 적어놓고 이해가 안가서 조금 끄적 거리면서 다시 이해 했다.

근데 생각 보다 재밌어,,,,,,,,,, 🙈🙈

새로운 아이디어? 생각 방식? 얻은 기분 ㅎㅎ

 


 

3. 카펫

3-1) 문제

 

3-2) 내 코드

brown = int(input())
yellow = int(input())

a = 3 #가로
b = 3 #세로           

while(a >= b):
    a = (brown + yellow)/b

    if (b-2)*(a-2) == yellow:
        print([int(a), b])
        break

    b += 1

 

 


 

4. 마치며

졸린데 재밌어 어떡행 >_< 🙊🙊