1 솔 8800등 하
https://codeforces.com/contest/1682
변명을 하자면 시험 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 해야합니다.
근데 그 쌍을 지었을 때 비트연산 &을 했을 때의 값이 최소가 되도록 만들어야합니다.
제 위치에 있지 않은 값끼리 &연산을 시켜주면 정답이 됩니다.
아쉽네요
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점대 퍼포먼스 보이겠습니다
'코드포스' 카테고리의 다른 글
코드포스 Codeforces Round #794 (Div. 2) A, B, C 풀이 (0) | 2022.05.26 |
---|---|
코드포스 Educational Codeforces Round 129 A, B, C 풀이 (0) | 2022.05.24 |
코드포스 Global Round 20 A, B, C 풀이 (0) | 2022.05.22 |
코드포스 #792 (Div. 1 + Div. 2) A, B 풀이 (0) | 2022.05.20 |
코드포스 #779 (Div. 2) - A, C 풀이 (0) | 2022.05.19 |