Roothyo
루시오의 Devlog
Roothyo
전체 방문자
오늘
어제
  • 분류 전체보기 (92)
    • ComputerScience (56)
      • 자료구조 (1)
      • 알고리즘 (6)
      • 네트워크 (12)
      • 코딩테스트 (34)
      • AI & ML (1)
      • BlockChain (1)
      • Security (1)
    • Programming Language (8)
      • JavaScript (8)
      • Python (0)
    • 서비스개발(Web, App) (18)
      • Front-End (2)
      • Back-End (8)
      • Cloud Server (2)
      • DevOps (4)
    • 프로젝트 (9)
      • UNY (4)
      • ThrowOrNot (4)
      • MoA (1)
    • 잡담 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • TLS
  • 프로그래머스
  • 코딩테스트
  • 애자일프로젝트
  • 클라우드서버
  • vmap
  • Redis
  • chat
  • nodejs
  • js
  • 백준
  • FRONT-END
  • Vast
  • Socket.io
  • JavaScript
  • 비디오광고
  • 알고리즘
  • 네트워크공부
  • level2
  • Node
  • 네트워크
  • VPAID
  • OpenVidu
  • Python
  • Nest.js
  • node.js
  • Python3
  • 코테
  • github
  • 완전탐색

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Roothyo

루시오의 Devlog

ComputerScience/코딩테스트

[프로그래머스] 튜플 - python3

2022. 2. 22. 12:46

셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.

  • (a1, a2, a3, ..., an)

튜플은 다음과 같은 성질을 가지고 있습니다.

  1. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)
  2. 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2)
  3. 튜플의 원소 개수는 유한합니다.

원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'를 이용해 표현할 수 있습니다.

  • {{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}

예를 들어 튜플이 (2, 1, 3, 4)인 경우 이는

  • {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}

와 같이 표현할 수 있습니다. 이때, 집합은 원소의 순서가 바뀌어도 상관없으므로

  • {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}
  • {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}
  • {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}

는 모두 같은 튜플 (2, 1, 3, 4)를 나타냅니다.

특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.

[제한사항]

  • s의 길이는 5 이상 1,000,000 이하입니다.
  • s는 숫자와 '{', '}', ',' 로만 이루어져 있습니다.
  • 숫자가 0으로 시작하는 경우는 없습니다.
  • s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.
  • s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.
  • return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.

[입출력 예]

 

s result
"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4]
"{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4]
"{{20,111},{111}}" [111, 20]
"{{123}}" [123]
"{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

입출력 예에 대한 설명입출력 예 #1

문제 예시와 같습니다.

입출력 예 #2

문제 예시와 같습니다.

입출력 예 #3

(111, 20)을 집합 기호를 이용해 표현하면 {{111}, {111,20}}이 되며, 이는 {{20,111},{111}}과 같습니다.

입출력 예 #4

(123)을 집합 기호를 이용해 표현하면 {{123}} 입니다.

입출력 예 #5

(3, 2, 4, 1)을 집합 기호를 이용해 표현하면 {{3},{3,2},{3,2,4},{3,2,4,1}}이 되며, 이는 {{4,2,3},{3},{2,3,4,1},{2,3}}과 같습니다.


- 튜플의 순서는 나온 원소의 갯수를 사용한다

- split과 dict를 사용해서 풀이했다.

- 정규표현식과 counter 모듈을 사용하면 더욱 편리하게 사용 가능하다

더보기
import re
def solution(s):
    answer = {}
    nums = s[1:-1].replace("},{", "|").replace("{", "").replace("}","").split("|")
    for item in nums:
        for n in list(map(int, item.split(","))):
            if n in answer:
                answer[n] += 1
            else:
                answer[n] = 1

    # print(sorted(answer.keys(), key=lambda x : -answer[x]))         
    return sorted(answer.keys(), key=lambda x : -answer[x])

'ComputerScience > 코딩테스트' 카테고리의 다른 글

[백준 2630] 색종이 만들기 - python3  (0) 2022.03.11
[프로그래머스] 디스크 컨트롤러 - python3  (0) 2022.03.03
[프로그래머스] 거리두기 확인하기 - python3  (0) 2022.02.21
[프로그래머스] [1차]뉴스클러스터링 - python3  (0) 2022.02.19
[프로그래머스] 신고 결과 받기 - python3  (0) 2022.02.15
    'ComputerScience/코딩테스트' 카테고리의 다른 글
    • [백준 2630] 색종이 만들기 - python3
    • [프로그래머스] 디스크 컨트롤러 - python3
    • [프로그래머스] 거리두기 확인하기 - python3
    • [프로그래머스] [1차]뉴스클러스터링 - python3
    Roothyo
    Roothyo
    개발 관련 지식 포스팅/ 잡담 블로그 입니다. 반갑습니다! (github : https://github.com/geun9716)

    티스토리툴바