-
반응형
1. 생각정리
- clothes 2차원 배열에는 (종류, 이름) 형식으로 스파이가 가지고 있는 옷에 대한 정보가 저장되어 있음
- 만들어질 수 있는 옷의 조합은 (각 종류별로 옷 종류+1을 다 곱한 값 -1)
2. 96.4/100 코드
- set란 2차원 리스트에 옷에 대한 정보들을 저장
- 1행에는 옷의 종류들을 다 저장
- 2행부터는 (2행->1행 1열 옷 종류의 옷 이름, 3행->1행 2열 옷 종류의 옷 이름...) 이런 느낌으로 저장
- 정답을 도출할 때는 2행부터 끝까지 훑으며 각 행의 리스트 길이를 활용하여 계산
- 근데 내가 코드를 작성하고도 다소 복잡하다는 느낌이 들었음
def solution(clothes): set = [[] for _ in range(30)] #1행에는 옷의 유형, 2행부터는 옷의 종류를 유형에 맞게 저장 for i in range(len(clothes)): if clothes[i][1] not in set[0]: set[0].append(clothes[i][1]) set[set[0].index(clothes[i][1])+1].append(clothes[i][0]) else: set[set[0].index(clothes[i][1])+1].append(clothes[i][0]) answer = 1 for i in set[1:]: if len(i)==0: continue else: answer = answer * (len(i)+1) return answer-1
3. 성공 코드
- dictionary를 활용하면 좀 더 정보를 깔끔하게 관리할 수 있을 것 같았다.
- 전체 clothes 배열을 for문으로 훑으며 처음 보이는 옷의 종류에 대해서는 '옷의 종류: 1' 이렇게 추가해주고, 이미 저장되어 있는 종류에 대해서는 value값에 1을 더해주는 식으로(같은 이름을 가진 의상이 존재하지 않으므로 가능)
def solution(clothes): answer = {} for i in clothes: if i[1] in answer: answer[i[1]] +=1 else: answer[i[1]] = 1 result = 1 for i in answer.values(): result = result * (i+1) return result-1
반응형'IT > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 해시 > 완주하지 못한 선수 (0) 2021.10.14 댓글