GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프론트엔드
  • 백준파이썬
  • 코딩
  • 코드업
  • 프로그래머스풀이
  • 코드업파이썬
  • 프로그래머스자바스크립트
  • 영어독해
  • 프로그래머스
  • 백준
  • 자바스크립트
  • PYTHON
  • 코테
  • 파이썬
  • javascript
  • 백준풀이
  • 프로그래밍언어
  • 독해
  • 영어
  • 코딩테스트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 2 문제 , 백준 파이썬 1141 , 접두사 , 정렬
알고리즘 공부/백준 - 파이썬

백준/ Silver 2 문제 , 백준 파이썬 1141 , 접두사 , 정렬

2022. 6. 27. 13:47

백준/ Silver 2 문제 , 백준 파이썬 1141 , 접두사 , 정렬

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------

난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>
푸는데 1시간 정도 걸렸다. 문제를 잘못이해해서 최대한 쪼개는걸로 풀었는데, 알고보니 최대한 모으는거였다.

 

<문제 출처>

 

https://www.acmicpc.net/problem/1141

 

1141번: 접두사

접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant,

www.acmicpc.net

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------

 

ex1)

6
hello
hi
h
run
rerun
running

 

 

정리한 store 리스트 출력.

 

 

 

sort로 정렬해준 뒤 뒤에 단어와 비교해준다.

 

(뒤에 단어랑 비교하는 식으로 이어나아가기 때문에 반드시 해줘야한다.)

 

 

만약 접두어 부분에 해당하게되면 뒤에 단어를 앞의 단어와 같은 집합에 추가한다.

 

그 다음 for 문을 돌면 앞의 단어와 뒤의 단어가 서로 접두어 관계가 아니다.

 

이 경우 새로운 집합을 만들어 저장한다.

 

이런 식으로 만들면 크게 부분집합이 4개 나오게 되는데

 

각 부분 집합에서 원소를  하나씩 뽑아 조합하면 부분집합의 갯수와 같은 같이 최대 크기가 4개인 집합이 형성된다.

 

ex) [ hello, hi, rerun, running]

 

 

참고로 h 는 hi 와 접두어 관계라 h 를 뽑아서는 안된다.

 

어차피 이런식으로 분류를 하게되면 각 부분집합에 뽑을만한 원소가 무조건 하나씩은 들어있다.

 

 

 

ex2)

 

6
a
ab
abc
abcd
abcde
abcdef

 

 

 

 

예제 2번의 경우 모두 각 단어의 앞자리와 접두어 관계이기때문에

 

한개의 집합만 형성되어있다.

 

이 집합에서 하나를 뽑을수 밖에 없으니 답은 한개이다.

 

 

 

 

 

ex3)

 

3
topcoder
topcoder
topcoding

 

 

 

 

 

예제 3번의 경우 부분집합이 두개 형성되었다.

 

이중에 한개씩 뽑아써야하니 답은 두개이다.

 

 

 

 

 

결국, 답은 store에 저장되는 부분집합의 갯수와 같기 때문에 부분집합이 하나씩 늘어날때마다

 

result+=1 을 통해 생성된 부분집합의 갯수를 카운트해줬다.

 

이후 출력은 이 result 변수값만 해주면 된다.

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------

정답

 

 

 

 

 

 

import sys
input=sys.stdin.readline

N=int(input())
words=[input().rstrip('\n') for _ in range(N)]
words.sort()
store=[[]for _ in range(N)]
store[0]=[words[0]]
result=1
cnt=0

for i in range(1,N):
    if words[i-1]==words[i][0:len(words[i-1])]:
        store[cnt].append(words[i])
    else:
        cnt+=1
        store[cnt].append(words[i])
        result+=1

print(result)

 

 

 

 

 

반응형

'알고리즘 공부 > 백준 - 파이썬' 카테고리의 다른 글

백준/ Silver 5 문제 , 백준 파이썬 10826, 피보나치 수 4  (0) 2022.06.29
백준/ Silver 5 문제 , 백준 파이썬 13241, 최소공배수  (0) 2022.06.28
백준/ Bronze 1 문제 , 백준 파이썬 9946 , 단어 퍼즐  (0) 2022.06.26
백준/ Silver 5 문제 , 백준 파이썬 1251 , 단어 나누기 , 정렬  (0) 2022.06.24
백준/ Bronze 1 문제 , 백준 파이썬 2309 , 일곱 난쟁이 , 정렬  (0) 2022.06.24
    '알고리즘 공부/백준 - 파이썬' 카테고리의 다른 글
    • 백준/ Silver 5 문제 , 백준 파이썬 10826, 피보나치 수 4
    • 백준/ Silver 5 문제 , 백준 파이썬 13241, 최소공배수
    • 백준/ Bronze 1 문제 , 백준 파이썬 9946 , 단어 퍼즐
    • 백준/ Silver 5 문제 , 백준 파이썬 1251 , 단어 나누기 , 정렬
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바