1 솔 8800등 하

https://codeforces.com/contest/1682

 

Dashboard - Codeforces Round #793 (Div. 2) - Codeforces

 

codeforces.com

 

변명을 하자면 시험 4분 전에 일어나서 1번 풀 때 앞이 잘 안 보여서 배열 잘못 줬습니다.

그 실수 아니었으면 대충 7천 등으로 올라갈 수 있기는 한데, carrot에서 레이팅 170점이나 차이나게 부여하는 거 보니까 막 속쓰리네요

팰린드롬인 문자열을 입력받은 다음에 몇개를 지웠을 때 여전히 팰린드롬인지 맞추는 문제입니다.

지우고 나서도 여전히 팰린드롬이려면 가운데에서 지워야겠죠..

가운데에서 반복되는 문자의 개수를 출력해주세요.

#include <stdio.h>
 
int main() {
    int t;
    int arr[1000000] = {};
    scanf("%d", &t);
    char s[1000001] = {};
    while(t--) {
        int n;
        scanf("%d", &n);
        scanf("%s", s);
        for(int i = 0; i < n; i++) {
            if(s[n / 2 +i] != s[(n / 2) + 1 + i]) {
                if(n % 2 == 1) printf("%d\n", i * 2 + 1);
                else if(n % 2 == 0) printf("%d\n", (i + 1)* 2);
                break;
            }
        }
    }
}
 

B. AND Sorting

 

0부터 n -1까지 순서대로 있는 배열에서 최소 한 쌍의 숫자의 위치가 뒤바뀌었다고 합니다.

ex) 0 1 3 2 4

숫자를 한 쌍씩 짝을 지어 순서대로 sort 해야합니다.

근데 그 쌍을 지었을 때 비트연산 &을 했을 때의 값이 최소가 되도록 만들어야합니다.

0 1 3 2를 sort할 때의 예시

제 위치에 있지 않은 값끼리 &연산을 시켜주면 정답이 됩니다.

아쉽네요

 

 

C. LIS or Reverse LIS?
 
이거 왜 틀린지 모르겠어서 일단 적어두겠습니다.
제가 접근한 방식은 정렬해주고, 이전 숫자보다 커지는 숫자가 몇개가 되는지 세어줬습니다.
그리고 똑같은 숫자는 2개까지만 세어줬는데
홀수개를 입력받을 때 제일 큰 숫자 하나를 정가운데에다가 두면 예외사항이 있을 것 같네요.
근데 제일 큰 숫자를 가운데에다가 두는 방법도 제출했다가 틀리긴 했는데..
틀린 이유 알았습니다.
1 1 2 2 3 4 4의 경우
제가 만든 코드는
1 2 3 4 4 2 1 이렇게 고려해서 3을 출력하는데
1 2 4 3 4 2 1 이렇게 4를 만들 수가 있더군요.. 제가 풀 수준은 아닌 것 같습니다.
 
 

 

B가 비트연산만 아니면 괜찮았을텐데 내일 Educational Con에서 진짜 1200점대 퍼포먼스 보이겠습니다

 

+ Recent posts