문제:

풀이방법:

 문자열을 처리하고 규칙에 따라 정리를 하면 되는 문제이다.

우선 양 끝은 {{~~}}으로 고정이 되어 있다. 따라서 슬라이싱을 통해서 이 부분을 떼어내고 숫자들을 구분하기 위해서    '}.{'로 split을 한다. 이렇게 하면 ['2', '2,1' , '2,1,3' , '2,1,3,4'] 와 같이 분리되게 된다.

 반복문으로 순환을 하면서 다시 ','을 기준으로 분리를 하면 숫자만 남게 되는데 이를 각 원소값이 int인 list로 tuples에 정리하게 된다. 이 단계까지 마치면 문자열을 규칙에 적용할 수 있도록 정리가 마무리 되었다.

 

규칙은 다음과 같다.

1. 각 list들을 길이가 짧은 순으로 정렬을 한다.

2. list의 숫자 값을 탐색하며 answer list에 없는 값이라면 answer에 넣고 break를 한 뒤 다음 list를 탐색한다.

 

따라서 이 규칙을 끝까지 적용하면 answer를 얻을 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(s):
    answer=[]
    splitS=s[2:-2].split("},{")
    tuples=[]
    for S in splitS:
        parser=S.split(',')
        tuples.append(list(map(int,parser)))
    tuples.sort(key = len)
    for tu in tuples:
        for t in tu:
            if t not in answer:
                answer.append(t)
                break
    return answer
cs

문제링크:

https://programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'Algorithm > Python' 카테고리의 다른 글

[BOJ]1350. 진짜 공간  (0) 2020.05.12
[BOJ]5014. 스타트링크  (0) 2020.05.07
[2019 Kakao winter internship]크레인 인형뽑기 게임  (0) 2020.04.21
[BOJ]2863. 이게 분수?  (0) 2020.04.16
[BOJ]7785. 회사에 있는 사람  (0) 2020.04.14

관계 데이터 모델은 지금까지 제안된 데이터 모델 중에서 가장 개념이 단순한 데이터 모델 중 하나이다. 동일한 구조의 관점에서 모든 데이터를 논리적으로 구성하며, 선언적인 질의어를 통해 데이터 접근을 제공한다.

 

기본적인 용어

1. 릴레이션 : 2차원의 테이블

2. 레코드 : 릴레이션의 각 행

3. 튜플 : 레코드를 공식적으로 부르는 말

4. 애트리뷰트 : 릴레이션에서 이름을 가진 하나의 열

 

도메인(domain)

도메인은 한 애트리뷰트에 나타날 수 있는 값들의 집합을 뜻한다. 각 애트리뷰트의 도메인의 값들은 원자값을 가지고 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있다. 프로그래맹 언어의 데이터 타입과 유사하다고 생각하면 된다.

 

차수(degree)

차수는 한 릴레이션에 들어 있는 애트리뷰트들의 수이다. 최소 차수는 1이여야 하며 차수가 자주 변하지는 않는다.

 

카디날리티(cardinality)

카니날리티는 릴레이션의 투플 수이다. 유효한 릴레이션은 카니날리티 0을 가질 수 있다.(릴레이션에 아무런 값이 없는 것이 가능하므로) 카디날리티는 시간이 지남에 따라 자주 변할 수 있다.

 

널값(null value)

'알려지지 않음' ,  '적용할 수 없음'을 나타내기 위해 널값을 사용한다. 하지만 널값이 숫자 0을 의미하거나 공백을 의미하지는 않는다. 

 

릴레이션 스키마(relation schema)

릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합이다. 릴레이션을 위한 틀이라고 생각하면 된다. 기본키 애트리뷰트에는 밑줄로 표시해 준다.

릴레이션 이름( 애트리뷰트 1 , 애트리뷰트 2,....., 애트리뷰트 N)과 같이 표기한다.

 

릴레이션 인스턴스(relation instance)

릴레이션에 어느 시점에 들어 있는 튜플들의 집합이다. 시간의 흐름에 따라 계속 변화한다.

 

+ Recent posts