본문 바로가기

최적화5

[백준] 1407번 2로 몇 번 나누어질까 사용 언어 - Python3 문제 - 1407번 2로 몇 번 나누어질까 1407번: 2로 몇 번 나누어질까 자연수 N이 주어지면, 자연수를 유지하면서 N을 2로 몇 번까지 나눌 수 있는지를 생각해 볼 수 있다. 즉, N의 모든 약수 중 2의 거듭제곱 꼴이면서 가장 큰 약수를 생각하는 것이다. 예를 들어 15의 www.acmicpc.net 정답 최적화 - 정수론(수학) (정답 맞춘 여부 X) 모든 숫자는 1로 나누어 떨어짐 -> F(A)는 기본 최소 A이다. 2의 거듭제곱으로 나눠주면서, 최소 몇개가 2의 거듭제곱으로 나눠지는지 확인한 후 그 값만큼 더해준다. A부터 B 구간 = B-A+1 = B-(A-1) => A에 1을 빼주고 tmp_a와 tmp_b를 계산한 후, print(tmp_b - tmp_a) .. 2023. 9. 22.
[백준] 14232번 보석 도둑 사용 언어 - Python3 문제 - 14232번 보석 도둑 14232번: 보석 도둑 희대의 도둑 효빈이는 세계 최고의 보석가게 영선상에 잠입할 계획이다. 이 영선상은 최고의 보석가게답게 최고의 보안장치를 두고 있는데, 이 보안장치를 해제하지 않는다면 보석을 여러 개 www.acmicpc.net 정답 최적화 - 정수론(수학) (정답 맞춘 여부 O) n을 i로 나눴을 때 0이라면 = 약수라면, n = n/i로 업데이트 반복한다. answer 빈 리스트를 만들어줘서 약수들 저장! n이 1이 아니라면, 마지막 n의 값을 answer에 추가해준다. 예. n=15 => [3], n=15/3=5 => [3,5] n = int(input()) answer = [] for i in range(2, int(n**0.5).. 2023. 9. 22.
[백준] 11653번 소인수분해 사용 언어 - Python3 문제 - 11653번 소인수분해 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 정답 최적화 - 정수론(수학) (정답 맞춘 여부 O) n을 i로 나눴을 때 0이라면 = 약수라면, n = n/i로 업데이트 같은 i로 나눈 값이 0으로 나누어 떨어진다면 계속 i로 나눠줌 안 나누어 떨어질 때까지! 반복 n = int(input()) if n == 1: print('') else: for i in range(2, n+1): if n % i == 0: while n % i == 0: print(i) n = n / i 레퍼런스 정답 깃허브 https://github.com/yyeongeun/codingtest/.. 2023. 9. 21.
[백준] 1979번 소수 찾기 사용 언어 - Python3 문제 - 1979번 소수 찾기 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 정답 최적화 - 정수론(수학) (정답 맞춘 여부 O) int(num**0.5) + 1 약수 구할 때, 모든 값으로 나누지 말고, 루트한 값까지만 나눠주기 n = int(input()) nums = map(int, input().split()) answer = 0 for num in nums: cnt = 0 if num > 1: for i in range(2,int(num**0.5)+1): if num % i == 0: cnt += 1 # 소수 아닌 경우 if cnt == .. 2023. 9. 21.
[백준] 15736번 청기 백기 사용 언어 - Python3 문제 - 15736번 청기 백기 15736번: 청기 백기 예제 입력 1의 경우 1, 2, 3번 깃발이 존재하고, 3명의 선수가 참가한다. 첫 번째 선수는 1의 배수의 번호를 가진 깃발을 뒤집는다. 초기에 청색이였던 깃발은 첫 번째 선수에 의해 모두 백기로 된 www.acmicpc.net 정답 최적화 - 정수론(수학) (정답 맞춘 여부 X) 수학적 사고는 문제를 빠르게 획기적으로 풀 수 있도록 해준다! 1. 직접 그려서 특징을 찾아내기 2. 제곱근 구현 루트후 정수 변환 n = int(input()) answer = int(n**0.5) print(answer) 레퍼런스 정답 깃허브 https://github.com/yyeongeun/codingtest/blob/main/BAE.. 2023. 9. 21.