개발자 톡
연습문제 톡
[한양대 HCPC 2023] X marks the Spot
풀이의 잘못된 점 잡아주시면 감사하겠습니다.
- 등록일
- 2024-04-23 15:04:09
- 조회수
- 323
- 작성자
- chhun3830
n 최대 500,000
문자열이 최대 1,000,000 이라길래 S length + T length = 1,000,000 이면
S에서 X를 탐색하는 과정에서 O(NS) 로 시간초과가 날것이라 생각해서 탐색 과정을 없애기위해 아래처럼 풀었는데요. 그냥 한 글자 입력마다 x인지 확인하고 인덱스만 찾아놓아서 합치는 방식으로 하려했는데 계속 틀렸다고 나와서요..
int n; char t[500005], ans[500005]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { int idx = 0; getchar(); int cntA = 0; char a; while (1) { a = getchar(); if (a == ' ') break; if (a == 'x' || a == 'X') { idx = cntA; } cntA++; } scanf("%s",t); ans[i] = t[idx]>='a' && t[idx]<='z' ? t[idx]-'a'+'A':t[idx]; } ans[n]=0; printf("%s",ans); return 0; }
그래서 그냥 아무 생각 없이 풀자 해서
S,T 입력받고 S에서 x 찾고 해당 T의 해당 인덱스 더해줬습니다.
int idx = -1; scanf("%s",s); for(int j=0;s[j] && idx<0;j++){ if(s[j]=='x' || s[j]=='X') idx= j; } scanf("%s",t);
그냥 이렇게요..
전자는 틀리고 후자는 맞은 이유가 있을까요..?
#[한양대_HCPC_2023]_X_marks_the_Spot