개발자 톡

연습문제 톡 [한양대 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

이 카테고리의 톡 더보기