-
#667 div3 9/5대회/코드포스 2020. 9. 5. 11:57
일단 엄청 오랜만에 알고리즘 문제를 집중해서 푼 것 같다. 아마도 저번 신촌연합대회 이후로 처음
디스코드에 신촌연합끼리 코드포스하는 방이 생겨나서 그 전보다 더 집중할 수 있었던 것 같다.
A solve
그냥 단순하게 두 수의 차를 10으로 나눈 몫을 계산하면 된다.
하지만 두 수가 나누어 떨어질때만 주의해서 계산한다. 구현도 쉽고 발상도 쉬웠다.
그래서 해석이 되자마자 푼 것 같다.
B 1TLE solve
두 수를 뺄 수 있는 만큼 뺀 뒤에 최소의 곱을 만들어야 하는데,
(a-1)b 와 a(b-1)을 비교하면 결국 a,b의 크기에 따라서 어떤 한 수를 뺐을 때의 곱 크기도 정해진다는 것을
알 수 있다. 작은 거를 최대한 뺀다.
여기서 좀 꼬였었는데, 처음에는 하나하나 빼서 비교하는 식으로 구현하려고 했다. 그러다 보니깐
에외처리도 많았고, 생각이 꼬이고, 구현도 힘들었다
그래도 작성 후 제출 하였는데 TLE.
그래서 가장 중요한게 무엇일까 생각을 계속 하다가 두 수에서 모두 최대로 줄일 수 있는 크기를 구했다.
최대로 줄일 수 있는 크기를 구한 뒤에 더 작은 수를 먼저 줄이고 나머지 수를 줄였다.
제일 오래 헤맨 문제...
C solve
수 두 개가 주어지고, n개로 구성된 등차수열을 만든다. 이때 최대 크기가 가장 작아지게 만드는데,
가장 중요한건 등차를 구하는 것이었다. 가장 작아지게 만드려면 등차가 가장 작아야 했으므로 가능한 가장 큰 등차부터 계산을 하였다.
구현이 살짝 꼬이기는 했는데, 등차를 구하고 나서 사이 값들을 while로 구하고 출력하는 곳에서 무한루프가 돌면서 꼬였었다. 구현이 왜 이 모양이지
아무튼 구현도 어렵지는 않았다.
D X
30분 정도 남아서 그리고 문제 길이도 짧아서 자신있었지만,
문제가 무슨 소리인지 몰랐다. digits의 해석을 수라고는 해석을 하였지만 계속 머릿속에서는 정수라고 인식을 해서 자리마다 수가 있다는 사실을 인지하지 못 햇다.
그래서 input output 를 비교해서 보면서 해석을 하였는데 족히 10분은 넘게 걸렸던 것 같다.
단순했다. 그냥 마지막 자리부터 0이 되게 만들고, 정답에 그 합친 수를 더하고 s보다 작거나 작아지게 만들면 됐다.
하지만 10^n과 idx의 괴리감이 어제는 더 심했어서 구현에서 계속 꼬였었다.
지금에서야 아는 사실이지만 0이 계속 나올때는 singed long long int 의 범위가 10^18이었기에, 오버플로우가 나서 0이 나왔다는 사실도 알았다.
자고 일어나니 이렇게 간단히 풀릴 수가 없었다.
아쉽다
그래도 코포하면 의욕도 생기고, 재미도 있고, 좋다
'대회 > 코드포스' 카테고리의 다른 글
#669 div2 9/8 (0) 2020.09.10 #668 div2 9/6 (0) 2020.09.07 #664 div2 8/12 (0) 2020.08.13 #662 div2 8/7 (0) 2020.08.08 #661 div3 8/5 (0) 2020.08.06