새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • docker
  • 프로그래머스
  • 코딩
  • 내일배움단
  • 자기주도학습
  • 스파르타코딩클럽
  • Python
  • 내일배움카드
  • Selenium 4
  • 코린이
  • 내일배움캠프
  • TodayILearned
  • Github
  • portfolio
  • til
  • 개발일지
  • 국비지원
  • 코딩프로젝트
  • machine learning
  • AI트랙

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 위장

2022. 8. 29. 23:40

문제

문제 설명

스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.

예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.

종류이름
얼굴 동그란 안경, 검정 선글라스
상의 파란색 티셔츠
하의 청바지
겉옷 긴 코트

스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.

 

입력 & 출력

입출력 예

clothesreturn

[["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]] 5
[["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]] 3

 

풀이 과정

1. 각각의 의상의 타입을 구해야 한다. 처음 구상은 입력받은 clothes의 값을 for문으로 나열하면서 clothe라는 배열 값을 얻어내고 그 배열 값의 [1] 값을 구하면서 result_type 변수에 넣는 것으로 생각하였지만 다른 사람의 풀이를 참고하여 밑의 방식대로 types = [y for x, y in clothes]로 타입의 개수를 구하였다.

2. set 함수를 이용하여 types에 있는 중복을 제거하여 준다 이렇게 되면 중복이 제거된 타입의 경우의 수가 나오게 되고 중복이 제거 되지 않은 것에서 몇 번이나 들어가 있었는지를 count 함수를 이용하여 얻어오게 되면 타입마다의 횟수를 구할 수 있다.

3. 마지막으로 이렇게 구한 횟수 값의 배열의 값에 각각 1을 더해서 곱해준다음 1을 빼주면 원하는 경우의 수를 얻을 수 있다. 

 

코드

def solution(clothes):
    answer = 1
    types = [y for x, y in clothes]
    counts = [types.count(type) for type in set(types)]
    for c in counts:
        answer *= c + 1

    return answer - 1
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 줄 서는 방법  (0) 2022.09.07
[프로그래머스] 방문길이  (0) 2022.09.06
[프로그래머스] 튜플  (0) 2022.08.28
[프로그래머스] 수식 최대화  (0) 2022.08.24
[프로그래머스] 올바른 괄호  (0) 2022.08.20
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 줄 서는 방법
    • [프로그래머스] 방문길이
    • [프로그래머스] 튜플
    • [프로그래머스] 수식 최대화
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바