1주차 | 문제 2. 동명이인
문제
새로운 학기가 시작한 어떤 사람은 새로운 수업에서 자신과 비슷한 이름을 가진 사람들이 있다는 것을 알아차린다. 이에 어떤 사람의 이름에 자신의 이름이 포함되어 있는 사람들이 몇 명 있는지 확인하기로 한다.
새로운 수업에 n명의 학생들이 있다. 어떤 사람의 이름이 주어졌을 때, 새로운 수업에서 어떤 사람의 이름을 포함한 다른 사람들의 명수를 구하는 프로그램을 작성하시오. 단, 같은 이름을 가진 사람이 여러 명일 수 있다.
입력
첫째 줄에 어떤 사람을 제외한 수업에 있는 사람의 수 n(1≤n≤10,000)명과 어떤 사람의 이름 s가 주어진다. 둘째 줄부터 n개의 줄에 걸쳐서 수업에 있는 사람들의 이름이 주어진다.주어지는 모든 이름은 알파벳 소문자로 이루어져 있으며, 이름의 길이는 1 이상 20 이하이다.
출력
새로운 수업에서 어떤 사람과 이름이 비슷한 사람의 숫자를 출력하시오.
풀이
n,s=input().split() # input 기본값 문자열
name_list=[]
for _ in range(int(n)): # 문자열 n을 정수로 변환
name_list.append(input())
c=0
for name in name_list:
if s in name: # s가 포함되는 이름이 있으면 c+1
c+=1
print(c)
수업에 있는 사람의 수 n과 어떤 사람의 이름 s를 입력받은 후, n명의 이름을 입력받아 name_list에 저장한다.
name_list에 있는 이름을 하나씩 가져와 그 이름에 s가 포함되는지 확인하여, 포함되면 c+1을 해준다.
구름 정답 코드
#입력받은 이름 name에 어떤 사람 이름 m이 포함되어 있는지 확인
for i in range(int(n)):
name = input()
if m in name:
cnt += 1
반복문이 2번이라는 것이 비효율적이라고 생각되었는데 정답 코드는 for문 한 번만으로 입력과 비교를 모두 수행할 수 있는 깔끔한 코드였다.
반응형