코딩도장 문제

안녕하세요
코딩 아예 처음 접해보는 왕초보입니다!

코딩도장 문제 풀어보다가 질문이 생겨서 올려봅니다!

아래는 제가 푼 문제입니다.

주어진 문자열(공백 없이 쉼표로 구분되어 있음)을 가지고 아래 문제애 대한 프로그램을 작성하세요.
이유덕, 이재영, 권종표, 이재영, 박민호, 강상희, 이재영, 김지완, 최승현, 이성연, 박영서, 박민호, 전경헌, 송정환, 김재성, 이유덕, 전경헌

  1. 김씨와 이씨는 각각 몇 명인가요?
  2. "이재영"이란 이름이 몇 번 반복되나요?
  3. 중복을 제거한 이름을 출력하세요.
  4. 중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요.

다른 분들의 답을 보며 다음과 같이 코드를 짜봤습니다.

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 오후

names = "이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,송정환,전경헌,김재성,이유덕,전경헌" list_names = names.split(',') split(',')는 따옴표 사이에 있는 것을 기준으로 리스트로 만들어 줍니다. list_names = ["이유덕","이재영", ...] 이렇게 되겠죠 ..? 리스트에서 [0] [1]은 해당 리스트 안의 순서를 의미합니다. list_names[0] = "이유덕" , list_names[1] ="이재영" str에서 [0] [1]은 무엇을 의미할까요? "이재영"이라는 str이 있다고 칩시다. 이 문자열에서 [0] [1] [2]는 이 재 영 을 가르킵니다. 문자열의 순서라는거죠. 따라서, 문자열의 길이중 젤 처음에 오는 [0]번째는 이 입니다. 따라서, name은 문자열 "이재영" 과 같은 상태며 해당 문자열에서 [0]번째는 이문자열의 [0]번째는 무엇이냐고 묻는것입니다. - jayb8463님, 2022년 12월 22일 4:25 오후 추천 , 대댓글
목록으로
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 오후

파이썬 리스트 슬라이싱 구글링해 보세요

COM_MONG

2022년 12월 26일 8:53 오후