백준에서 개최되었던 대회이다.

백준 대회에서 처음으로 3솔 해서 간단하게나마 블로그에 정리해 본다.

푼 문제가 다 브론즈다 ㅠㅠ

시작하자마자 문제를 풀었고, 푸는 속도도 나름 괜찮았는지 초반에는 등수가 상당히 작은 한자리 수였다.

4등까지 올라갔던 것 같다.

하지만 시간이 지나면서 고수분들은 어려운 문제들을 척척 푸시고, 나는 그러지 못해서 결국은 등수가 큰 2자리 수로 내려갔다 ㅠㅠ

그럼 풀이로 들어가자.

 

PA. 세금

-> 간단한 수학 문제이다.

-> 문제에서 전체 상금의 22%를 제세공과금으로 납부하는 경우와 상금의 80%를 필요 경비로 인정받고, 나머지 금액        중 22%만을 제세공과금으로 납부하는 경우의 수령 금액을 구하라고 했는데, 이를 수학으로 풀면 된다.

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d %d",n-(n*22/100),n-(n*20/100)*22/100);
}

[00:03 맞았습니다!]

 

이 문제에서 처음에 너무 복잡하게 생각해서 코드를 이상하게 짜는 바람에 1번 미스가 나서 시간을 너무 많이 쏟아 버렸다.

쉬운 문제는 쉽게 생각해야 한다. 이것은 코포 div.3에서도 적용된다.

(나는 자꾸 쉬운 문제를 어렵게 생각하고 긴장해서 1분만에 풀 것을 10분도 넘게 걸린다 ㅠㅠ)

PA번 다음 문제는 PB번인데, 내가 PB번을 봤을 때 첫인상이 너무 어려워 보였다.

그래서 다음 문제들을 슥 훑어보던 도중 굉장히 쉬운 문제를 또 찾게 되었는데, 바로 D번이다.

D번을 빨리 찾은 것이 신의 한 수였다.

 

D. Darius님 한타 안 함?

-> 역시 간단한 문제이다.

-> 조건문으로 a+c<b 또는 b=0 이면 hasu를 출력하고, 아니면 gosu를 출력하면 된다.

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d/%d/%d",&a,&b,&c);
    if(a+c<b||b==0) puts("hasu");
    else puts("gosu");
}

[00:05 맞았습니다!]

 

이 문제를 푸는데 걸린 시간이 PA번 푸는데 걸린 시간보다 짧다,,

그만큼 PA에서 긴장한 것 같다.

이 문제를 품으로써 나는 비록 초반이지만 5분만에 2문제를 푼 상위권으로 올라가게 되었다.

그리고 다른 문제들을 스캔하던 중 E번이 눈에 들어와서 고민을 해 보았다.

하지만 아무리 생각해도 답이 나오질 않아서 포기하고 J번을 보았더니 조합 문제였다.

교란순열 관련 문제여서 간단하게 짜서 컴파일러에서 돌려보니 정답이 잘 나와서 제출하려는 순간..

뭔가 큰 테케에서 틀릴 것 같았다.

내 감은 틀리지 않았고, 최대치를 입력해본 결과 실행시간이 압도적으로 길어졌다.

그래서 어떻게 하면 교란순열 구하는 과정을 최적화할 수 있을 까 고민하다가 그냥 포기하고 공부하러 들어갔다.

그리고 대회 시작 약 2시간 후에 나와서 다시 문제를 훑어보는데..

뭔가PC번에서 느낌적인 느낌으로 두 문자열의 길이를 더한 것이 답일 것 같았다.

그래서 PC번을 풀게 되었다(...)

 

PC. 스시

-> 처음 볼 때는 상당히 어려워 보인다.

-> 하지만 문제를 잘 관찰해 보면 두 문자열의 길이를 더한 것이 답이 됨을 알 수 있다.

#include<stdio.h>
#include<string.h>
int main()
{
    int n,cnt=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        char str[101];
        scanf("%s",str);
        cnt+=strlen(str);
    }
    printf("%d",cnt);
}

[02:32 맞았습니다!]

 

진짜 감이 잘 들어맞은 문제였다.. ㄷㄷ

'대회 후기 > 그 외' 카테고리의 다른 글

KOI 오픈 컨테스트 후기  (0) 2020.11.16

나는 애초에 KOI같은 대회는 나갈 생각도 없었고, 나가서 잘 할 것이라는 자신이 없었다.

엣코더, 코포 뉴비에 백준 플래 4가 뭘 하겠는가..

그런데 오픈 컨테스트가 있다는 것을 보고 뭔가 해보고 싶어서 신청을 해 놓고, 2시간 정도 시간을 내서 풀기로 했다.

1116825분경에 시험을 시작했고, 초등부 시험을 쳤다.(현재 초딩이다)

결론부터 말하자면... 심하게 뇌절했다.

1차대회 문제를 백준에서 업솔빙했을 때는 굉장히 쉬웠고, 고등부까지 포함해서 1문제 빼고 다 풀었던 기억이다.

그래서 2차대회도 쉽겠지? 하고 시험을 쳤는데 상당히 어려워서 뇌절했던 것 같다.

또 아는 알고리즘이 많이 없어서 푸는 방법은 알아도 구현을 못하는 (아주 큰)문제점이 있었다.(실제로 그런 이유로 3번을 못 푼 것 같다)

서론은 이쯤 하고... 문제 풀이와 본격적인 후기로 들어가자.

 

시작하자마자 1번으로 들어가서 문제 파일을 다운받았다.

1번 문제는 어렵지 않았다.

풀이는 다음과 같다.

 

(풀이)

N개 중 K개의 수를 어떻게 뽑아도 처음에 뽑은 수는 0, 그 다음은 1, 3번째는 2 ... 해서 K번째는 K-1 손해를 보게 되어있다.

그래서 가장 큰 K개의 수를 뽑아야 손해를 보더라도 최대가 됨을 알 수 있다.

이에 근거해 수열의 합 개념을 이용하면 문제의 답은 다음의 식과 같다.

(가장 큰 K개의 수) - (K-1)*K/2

문제도 쉽고, 나는 부분점수를 받을 생각을 안하고 애초에 정풀을 생각하려고 노력했기 떄문인지 바로 100점을 받을 수 있었다.

<코드>

이 코드로 19분만에 AC를 받았다. [2020/11/16/08:44] 100/100

2번 문제는 보자마자 뇌절을 하기 시작했다.

내가 어려워하던 종이접기 문제일 뿐만 아니라 이걸 어떻게 구현할지 전혀 감이 안왔다.

그래서 아무 생각도 안하고 첫 번째 부분문제만 풀기로 하고 k1일 때 나올 수 있는 정답이 몇 개인지를 직접 셌다.

얻어진 결과를 하드코딩한 결과 29점을 긁을 수 있었다.

근데 이 29점을 얻는 과정도 순탄하지가 않았던게, 여기서 구현미스로 뇌절을 거의 30분 가까이 했다.

여담으로 이 문제는 부분문제당 테케가 한 개씩, 전체 3개밖에 없었다. 지금 생각하니 대회에 이렇게 데이터가 약해도 되나 싶다.(1번 문제는 데이터가 200개 이상이다)

이 문제는 하드코딩을 했기 때문에(...) 굳이 코드를 공유하지 않겠다.

 

2번과 3번 문제를 봤는데...

어려워 보여서 문제만 읽고 걍 버렸다.

초딩이 이걸 어케 푸노,,

 

4번 역시 문제 읽고 버렸다.

 

그래서 1번에서 100을 얻어 총 100점으로 대회를 마무리했다.

백준에 문제들이 올라오면 2번 문제는 업솔빙할 예정이다.

 

'대회 후기 > 그 외' 카테고리의 다른 글

제4회 천하제일 코딩대회 후기  (2) 2021.01.03

+ Recent posts