코딩,해볼까

05.03. 문자열과 리스트 자료형 / 프로그래머스 전국 대회 선발 고사 본문

Back/TIL

05.03. 문자열과 리스트 자료형 / 프로그래머스 전국 대회 선발 고사

떠굥 2023. 5. 3. 23:37

0.  오늘 배운 것

enumerate는 index와 요소를 둘 다 받아올 수 있다.

.replace(대신하고싶은 것)

zip() : 길이가 같은 리스트를 엮어준다.

dict() : 딕셔너리 형태로 만든다.

for문 사용 시 리스트, 딕셔너리 이름.items() 를 해주면 key 와 value 를 가져올 수 있다.


1.  문제점

프로그래머스 코딩 기초 트레이닝 전국 대회 선발 고사

문제 풀이 실패


2. 시행착오

  • 코드의 큰 틀을 계획
    - rank의 idx와 attendance의 idx 매치
    - false는 모두 제외한 후 idx를 1=a,2=b,3=c 로 가져와서 수식에 넣어준다.
  • 계획 1) rank와 attendance 를 key, value로 넣어본다. { rank : attendance }
  • 계획 2) enumerate 함수는 인덱스를 보여주니까 같이 활용하면 좋겠다.
  • 계획 3) 리스트를 붙여서 시도해본다. [rank, attendance] / [rank], [attendance] / [ [rank], [attendance] ]
  • 계획 4) 리스트에서 false인 것들을 삭제하더라도 그 인덱스를 가지고 있어야 하므로 .replace(' ') 로 공백을 넣어둔다.
  • 계획 5) .replace(' ') 의 작동방법을 확실하게 몰라서인지.. 원하는 값을 얻지 못하고 del로 다시 시도해봤다.
def solution(rank, attendance):
    
    answer = []
    answer_idx = []
    print(answer, answer_idx)
    ra_dict = dict(zip(rank, attendance))
    for idx , i in enumerate(ra_dict.items()):
        print(idx, i)
        if i[1] == True:
            answer.append(i)
            answer_idx.append(idx)
        print(attend_list)
        if len(attend_list) == 3:
           break
    

    return 10000* attend_list[0] + 100*attend_list[1] + attend_list[2]

 

 

모든 시도들이 결국에는 등수에 맞는 인덱스를 가져와야 하는 부분에서 막혔다.


3. 해결방법

모든 방법을 실패하고, 처음부터 계획도 다시 세워서 시도했으나 실패했다.

# rank = [3,7,2,5,4,5,1]  (등수)
# attendance = [false, true, true, true, true, false, false]
# 0 1 2 3 4 5 6 (번호 = idx)

# 참석할 수 있는 등수 친구의 번호 구하기.

# 1. 등수와 번호를 합친다. = rank_idx
# 2. attendance를 참고하여 false인 친구를 등수와 번호에서 빼준다.
# 3. 남은 등수와 번호를 등수를 기준으로 정렬한다.
# 4. 순서대로 a b c 에 담아 식을 출력한다.

go = []
for i,r in enumerate(rank):
   
    print(i,r)
    if attendance[i] == True:
        go += [r]


print(go)

4. 알게된 점

문자열과 자료형에 대한 공부가 많이 부족한 것 같다.

기본 문제를 같이 풀면 좋은데 시간이 없어서 걱정이다.

효율적인 학습 방법에 대해 상담해보기로 했다.

 

 

 

 

Comments