알고리즘(45)
-
백준 1072번(이분탐색) python
♣ 시도1. 무식하게 수학식으로 도전! 더 게임한 횟수를 m으로 잡고, m을 1씩 늘려가면서 조건에 해당하는지 체크하는 방법이다. 보다시피 수학 식도 지저분하고 쓸데없는 부분까지 들어가있다. ( m을 1부터 시작하는 거니까 z+2와는 굳이 비교할 필요가 없다. ) 시간제한이 없으면 정답 처리되겠지만 당연히 시간 초과로 나가리당했다. ♣ 지저분한 수학식을 함수로 정리해서 도전! 지난 번 스터디에서 그냥 수학식을 푸는 것보다 함수를 정의한 후 함수를 사용하는 게 사용되는 시간을 줄일 수 있다는 것을 배웠다. 그래서 이번에는 지저분한 수학식을 함수로 정의한 후 사용했다. 여전히 시간을 초과해서 실패! ♣ 이분탐색을 이용하여 도전! 본 문제는 이분탐색을 이용하여 해결해야 한다고 한다. 게임을 더 할 수 있는 최..
2023.11.18 -
백준 1929
소수의 조건: 약수가 1과 자신만 있어야 함. 다른 수로는 나뉘면 안 됨 ♣ 첫 번째 시도 M 이상 N 이하의 수들을 하나씩 소수인지 아닌지 따져봄. 숫자가 1이면 소수가 아니므로 바로 break를 준다. 해당 숫자까지 모두 가져와서 나눌 필요 없이 (i // 2) + 1 까지만 가져와서 나누면 된다. 나누는 와중에 나머지가 0이 되면, 즉 약수가 1과 그 자신 외에도 존재하면 break를 준다. 끝까지 나머지가 0이 되는 경우가 없으면 해당 수는 소수이므로 출력한다. -> 시간 초과! ♣ 두 번째 시도 시간 초과를 해결하기 위해 해당 수가 소수인지 확인하는 부분을 함수로 만들었음. all: 파이썬에 내장된 함수. 반복 가능한(iterable) 객체의 모든 요소가 참(True)이면 True를 반환함. 그..
2023.11.16 -
백준 알고리즘 1920번
[첫 번째 시도] 봉지수를 최소화하기 위해 전체 무게 N에서 5kg이 들어갈 수 있는 최대 수 구함(five) 5kg 봉지만큼을 뺀 무게를 이번에는 3으로 나눠서 3kg이 들어갈 수 있는 최대 수 구함(share) 5kg과 3kg이 모두 빠졌을 때 남은 무게 구함(rest) 이때 rest가 0이면 Nkg 만큼 모두 가져간 것이므로 five와 share을 더해서 print하고 break 로 while문을 빠져나감 rest가 1이면 5kg을 한 번 빼야 함. 그러면 나머지가 6이니까 3kg이 2번 더 들어가면 rest가 0이 됨. 그래서 five-1+share+2 = five+share+1 을 프린트함. rest가 2이면 5kg을 두 번 빼야 함. 그러면 나머지가 12니까 3kg이 4번 더 들어가서 rest..
2023.11.08