이름 목록 names에서 prefix로 시작하는 이름 수를 구해요. 비교할 때 이름과 prefix의 앞뒤 공백을 제거하고 영문 대소문자를 구분하지 않아요. 이름 중간의 공백은 그대로 두어요. 같은 이름이 여러 번 있으면 항목마다 각각 세요.
solution(names, prefix)가 개수를 반환하도록 빈칸을 채워 주세요. normalize는 비교용 문자열을 만들어요.
매개변수와 반환값
- 이름 수 n은 1
100, 각 이름의 길이는 150이에요. - 이름과 prefix는 영문자와 공백만 포함해요. 이름과 prefix는 모두 공백 제거 후 영문자를 하나 이상 포함해요.
- prefix의 원래 길이는 1~20이에요. 이름보다 길어도 돼요.
- 반환값은 일치한 항목 수인 정수예요.
예시
names = [' Ann', 'ANNA ', 'Ben', 'An drew'],prefix = ' an '이면 결과는3이에요.names = ['blue room', 'Blue', ' red'],prefix = 'BLUE '이면 결과는2이에요.
실행용 입출력
첫 줄에 n, 둘째 줄에 prefix를 입력하고 다음 n줄에 이름 하나씩 입력해요. 줄의 앞뒤 공백도 문자열의 일부예요. 개수 하나를 출력해요.
예시 입력
4 an Ann ANNA Ben An drew
예상 결과
3
예시 입력
3 BLUE blue room Blue red
예상 결과
2
핵심 개념
function-design:normalize(text)의 반환값은 원래 문자열을 바꾸지 않고 비교용으로 만든 새 문자열이에요.array-1d:for name in names로 리스트의 문자열을 하나씩 읽어요.conditionals:.startswith(key)는 문자열이 key로 시작하면 참을 반환해요.text[:k]는 앞의 k개 문자를 읽는 슬라이스예요.
문자열의 .strip()은 앞뒤 공백을 제거하고 .lower()는 영문자를 소문자로 바꿔요. 중간 공백은 제거하지 않아요. input()은 줄 하나를 읽으며 줄 끝 개행은 제외하지만 앞뒤 공백은 남아요. int(input())은 그 문자열을 정수로 변환해요.
[input() for _ in range(n)]은 n줄을 읽어 새 리스트에 모으는 컴프리헨션이에요. _는 반복 횟수만 필요해 사용하지 않는 반복 변수 이름이에요.