11653번 (2강 최적화) 질문이있습니다.
아래와 같이 완전탐색(?)을 이용해 작성하였는데요, 말씀하신 최적화 방법(약수를 구할때는 해당 수의 제곱근까지만 구해도 약수의 개수와 약수를 구할 수 있다)으로 어떻게 코드를 최적화 할 수 있을지 잘 모르겠습니다.
let input = readLine().map { Int($0)! }!
var answer: [Int] = []
var previous = input
func check(i: Int, divided: Int) -> Bool {
if divided % i == .zero {
answer.append(i)
previous = divided / i
return true
} else {
return false
}
}
if input == 1 {
} else {
for i in 2...(input) {
var flag = true
repeat {
let check = check(i: i, divided: previous)
flag = check
} while flag
}
answer.compactMap { print(String($0)) }
}
Answer 2
1
최적화
보석값 입력 받기
let gem = readLine().map { Double($0)! }!
//소인수 분해해야함.
var answers: [Int] = []
var previous = Int(gem)
var squreRoot = Int(Double(gem).squareRoot())
func check2(divided: Int, i: Int) -> Bool {
if divided % i == .zero {
previous = divided / i
answers.append(i)
return true
} else {
return false
}
}
//2,3,4
for i in 2...squreRoot {
var flag = true
repeat {
let result = check2(divided: previous, i: i)
flag = result
} while flag
}
if previous != 1 {
answers.append(previous)
}
answers.sort()
print(answers.count)
print(answers.compactMap { String($0) }.joined(separator: " "))통과한 답변 공유합니다~
1
질문 감사합니다 :)!!!
저는 아래와 같은 방법으로 최적화를 했습니다 🙂
강의 우측 상단에 보시면 강의자료 다운로드가 가능합니다 !
거기에 제 코드도 있으니 풀어보시고 어려우시면 참고자료로 사용해주세요!
최적화 전 (BOJ https://www.acmicpc.net/problem/11653 )
numbers = int(input())
d = 2
while d <= numbers:
if numbers % d == 0:
print(d)
numbers = numbers / d
else:
d = d + 1
최적화 후 (BOJ https://www.acmicpc.net/problem/14232 )
number = int(input())
answer = []
for i in range(2, (int(number**0.5) +1)):
while(number % i == 0):
answer.append(i)
number //= i
if number != 1 :
answer.append(number)
print(len(answer))
print(*answer)
0
브라우저가 혹시 지금 사파리이신가요?
크롬 브라우저로 확인 가능하시면 부탁드리겠습니다!
아마도, 웹 브라우저 OS에 따라서 버그가 있는 것 같네요.. 😢 죄송합니다..!
dp[x]가 최대값이라고 확신할수 있는 이유
0
44
1
1090번 문제 질문
0
148
1
유니온파인드
0
111
1
투포인터 25:15 질문
1
127
1
#1090번 문제 반례가 궁금합니다.
0
145
1
예제코드 자바입니다
1
186
1
정수론 파트 #2247 문제에 대한 질문입니다!
0
101
0
코드 오류
0
185
1
2강 정수론 문제3 #1407 질문
0
126
0
이차원 배열 (int형)dp로 0 혹은 -1로 체크하는 방법 말고 boolean형 배열로 체크해서 바로 리턴해줄 수 없나요?
0
154
0
1717번 최적화
0
112
0
백준 22988 문제 질문
1
192
2
[Python] 백준 1090번 문제
1
223
3
강의자료에서
1
161
2
2503 문제 제한 조건 질문!
1
248
2
백준 22988 번 문제
1
191
1
추가 강의 순서
1
179
2
(*문제 풀이)1090 테스트케이스 1번 C++
1
219
2
7강 RGB 색칠하기 질문 있습니다.
1
160
2
정수론 약수 빠르게 구하기 질문
1
255
1
1090 문제의 2, 3번째 아이디어는 결국 같은거 아닌가요?
1
372
2
1090 문제 관련하여 맨해튼 거리 최솟값에 대해 질문 있습니다.
1
222
2
누적합 문제 3번 질문
1
214
2
기억 ( 누적합 ) 강의 11660 문제
1
162
2


