코딩도장 문제
안녕하세요
코딩 아예 처음 접해보는 왕초보입니다!
코딩도장 문제 풀어보다가 질문이 생겨서 올려봅니다!
아래는 제가 푼 문제입니다.
주어진 문자열(공백 없이 쉼표로 구분되어 있음)을 가지고 아래 문제애 대한 프로그램을 작성하세요.
이유덕, 이재영, 권종표, 이재영, 박민호, 강상희, 이재영, 김지완, 최승현, 이성연, 박영서, 박민호, 전경헌, 송정환, 김재성, 이유덕, 전경헌
- 김씨와 이씨는 각각 몇 명인가요?
- "이재영"이란 이름이 몇 번 반복되나요?
- 중복을 제거한 이름을 출력하세요.
- 중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요.
다른 분들의 답을 보며 다음과 같이 코드를 짜봤습니다.
names = "이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,송정환,전경헌,김재성,이유덕,전경헌"
list_names = names.split(',')
cnt_k = 0
cnt_l = 0
cnt_ljy = 0
for name in list_names:
if name[0] == '김':
cnt_k += 1
if name[0] == "이":
cnt_l += 1
if name == '이재영':
cnt_ljy += 1
print("1. 김씨와 이씨는 각각 몇 명인가요? 김씨: " + str(cnt_k) + "명, 이씨: " +str(cnt_l)+"명")
print("2. 이재영이라는 이름이 몇 번 반복되나요? " + str(cnt_ljy) + "번")
set_names = (set(list_names))
print("3. 중복을 제거한 이름을 출력하세요")
for name in set_names:
print(name)
print("4. 중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요.")
for name in sorted(set_names):
print(name)
처음에
for name in list_names의 마지막 if 문을
if name[0] == '이재영':
cnt_ljy += 1
과 같이 작성하였더니 2번 질문의 답이 0으로 출력되었습니다.
name뒤에 [0]을 왜 붙이면 안 되는 것인지, 뒤에 붙은 이 [0]이 정확히 어떤 의미인지 궁금합니다!
ssn 님 442
2022년 12월 22일 4:06 오후
2개의 답변이 있습니다. 1 / 1 Page
names = "이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,송정환,전경헌,김재성,이유덕,전경헌"
list_names = names.split(',')
print(list_names)
list_names를 print 해보세요.
list_names의 값은 여러개의 str값이 들어있는 리스트로 되어있을 것입니다.
['이유덕', '이재영', '권종표', '이재영', '박민호', '강상희', '이재영', '김지완', '최승혁', '이성연', '박영서', '박민호', '송정환', '전경헌', '김재성', '이유덕', '전경헌']
여기서
for name in list_names: 를 하게 된다면
list_names안에 있는 ['이유덕'] 다음 ,['이재영'] 이렇게 하나씩 name에 할당되며 돌아 가게 됩니다.
for i in range(0, len(list_names)):
name =list_names[i]
이랑 같다는 의미입니다.
따라서, 현재 name은 "이유덕" 이 하나의 str입니다. 리스트가 아닌
질의자는 name을 현재 리스트로 착각하고 있는것 같습니다.
리스트에서 꺼낸 아이템은 str입니다. 리스트에서 [0]은 이유덕이 맞지만
리스트에서 꺼낸 [0]은 str입니다. 이 str의 [0]은 "이유덕"에서 "이"에 해당합니다.
jayb8463 님
2022년 12월 22일 5:01 오후