ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #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

    댓글

Designed by Tistory.