일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- spring
- php 프로그래밍 입문 연습문제
- 페이코 추천인
- programmers
- php 프로그래밍 입문 예제
- Flutter
- 배열
- php 프로그래밍 입문
- 페이코 초대코드
- 한정 분기
- 페이코 친구코드
- php 프로그래밍 입문 솔루션
- C
- php 프로그래밍 입문 문제풀이
- 백준
- 파이썬
- C언어
- 스프링
- php
- 플러터 개발환경 설정
- 플러터
- 페이코 추천인코드
- 최단 경로
- 자바
- Java
- SWEA
- 자바 스프링
- php 프로그래밍 입문 3판
- php 프로그래밍
- JAVA SPRING
Archives
- Today
- Total
11-23 00:00
ImJay
[파이썬/Python] 백준 1181번 단어 정렬 본문
반응형
[파이썬/Python] 백준 1181번 단어 정렬
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
해설
사전 순으로 정렬하고, 길이가 짧은 순으로 정렬하게 되면 사전 순으로 정렬한 의미가 사라진다.
따라서, 사전 순으로 정렬부터 한 다음에 길이 순으로 정렬해야한다.
코드
import sys
words = []
for _ in range(int(sys.stdin.readline().strip())):
words.append(sys.stdin.readline().strip())
words = list(set(words)) # 중복 제거
words.sort() # 사전 순으로
words.sort(key = len) # 길이가 짧은 것부터
for word in words:
print(word)
풀이
import sys
words = []
for _ in range(int(sys.stdin.readline().strip())):
words.append(sys.stdin.readline().strip())
1. N 을 입력 받고, 반복하여 리스트에 단어를 넣는다.
words = list(set(words)) # 중복 제거
2. 파이썬에서 집합은 중복된 내용을 하나로 취급하기 때문에 사라진다.
따라서, 입력받은 리스트를 집합으로 바꾼 다음에 다시 리스트로 바꿔준다.
words.sort() # 사전 순으로
words.sort(key = len) # 길이가 짧은 것부터
3. sort 메소드를 통해 사전 순으로 정렬하고, sort 메소드의 파라미터를 len으로 받아 길이 순으로 다시 정렬한다.
for word in words:
print(word)
4. 출력
피드백
1. 처음에 풀 때 sort 생각 못하고 ( 왜 자꾸 못떠올리지 ) bubble, merge sort 문제인줄 알았다.
2. 풀고 나서 굳이 리스트로 받아서, 집합으로 변환 후 다시 리스트로 변환하는게 비효율적으로 보여서
import sys
words = set()
for _ in range(int(sys.stdin.readline().strip())):
words.add(sys.stdin.readline().strip())
words = list(words)
words.sort() # 단어 순 정렬
words.sort(key = len) # 길이가 짧은 것부터
for word in words:
print(word)
처음부터 집합으로 받아보았다.
??? 집합으로 입력 받는 것 자체가 실행 시간에 무리가 가는 듯 하다. (add method?)
반응형
'Solved.ac - Python > CLASS 2' 카테고리의 다른 글
[파이썬/Python] 백준 1654번 랜선 자르기 (0) | 2023.04.18 |
---|---|
[파이썬/Python] 백준 1436번 영화감독 숌 (0) | 2023.04.17 |
[파이썬/Python] 백준 1259번 팰린드롬수 (0) | 2023.04.17 |
[파이썬/Python] 백준 1085번 직사각형에서 탈출 (0) | 2023.04.13 |
[파이썬/Python] 백준 1018번 체스판 다시 칠하기 (0) | 2023.04.13 |
Comments