← 실전 문제

한 글자를 고치는 이름표

C++완성형

기준 이름표 base와 길이가 같은 이름표들이 있어요. 정확히 한 위치의 문자를 다른 소문자로 바꾸어 base와 같게 만들 수 있는 이름표의 수를 구해요. 문자를 넣거나 지울 수는 없어요. 이미 같은 이름표는 고칠 필요가 없어서 세지 않아요. 같은 이름표가 반복되면 각각 별도로 세어요.

int solution(string base, vector<string> labels)가 요구한 값을 반환하도록 함수를 작성해 주세요.

매개변수와 반환값

base의 길이 L은 130, labels의 길이는 0100이에요. 모든 이름표의 길이는 L과 같고 영어 소문자로만 이루어져 있어요. 반환값은 고칠 수 있는 이름표 수로 0~labels.size()예요.

예시

  1. base="cat", labels={"cat", "bat", "car", "dog"}이면 2를 반환해요. bat와 car는 한 위치만 달라 고칠 수 있어요. cat은 이미 같고 dog는 세 위치가 달라요.
  2. base="a", labels={"a", "b", "c", "b"}이면 3를 반환해요. b·c·b 세 이름표는 한 글자를 바꾸면 같아져요. 반복된 b도 두 번 세어요.

실행용 입출력

첫 줄에 이름표 수 n, 둘째 줄에 base, 이후 n줄에 이름표를 입력해요. main은 입력을 매개변수로 바꾸고 반환값을 출력하는 채점 하네스예요. 풀이 대상은 solution 함수예요.

예시 입력

4
cat
cat
bat
car
dog

예상 결과

2

예시 입력

4
a
a
b
c
b

예상 결과

3
핵심 개념
  • stl-string: 문자 위치와 문자열의 길이를 읽어요.
  • conditionals: 조건과 정확한 경계를 판별해요.
  • stl-vector: 벡터의 크기와 인덱스로 매개변수를 읽어요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기