Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- c언어
- 리눅스마스터 2급 2차
- 토이프로젝트
- 프로그래밍
- 자바
- 위클리챌린지
- 백준
- 스프링
- 오라클
- 파이썬
- 데이터베이스
- 엘라스틱서치
- SQL 정리
- 데이터프로그래밍
- 스파크
- 스프링부트
- 필기
- 문제풀이
- 알고리즘
- MySQL
- SQL 문법
- 기초
- 해킹실습
- 코딩테스트
- 이클립스
- 빅데이터
- 문법
- 프로그래머스
- 모의해킹
- SQL
Archives
- Today
- Total
개발일기
백준 1181번 파이썬 풀이 : 단어 정렬 본문
반응형
문제 링크 : https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로입력
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
# 문제 풀이
이 문제는 람다식을 사용하여 본인이 원하는대로 정렬할 수 있는지 확인하는 문제이다.
1
2
3
4
|
n = int(input())
words = []
for _ in range(n):
words.append(input())
|
cs |
단어의 개수를 입력 받은 후 단어들을 words 라는 배열안에 대입해준다.
1
|
words = list(set(words))
|
cs |
리스트에서 중복 제거를 위해 set을 사용하고 다시 list 형태로 묶어 배열 형태를 유지해준다.
1
2
3
4
|
words = sorted(words, key=lambda x: (len(x), x))
for i in words:
print(i)
|
cs |
lambda 식을 사용하여 우선적으로 x의 길이로 정렬을 한 후에 길이가 같다면 오름차순으로 정렬해준다.
# 전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
|
n = int(input())
words = []
for _ in range(n):
words.append(input())
words = list(set(words))
words = sorted(words, key=lambda x: (len(x), x))
for i in words:
print(i)
|
cs |
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 1205번 파이썬 풀이 : 등수 구하기 (0) | 2021.10.10 |
---|---|
백준 1183번 파이썬 풀이 : 약속 (0) | 2021.10.09 |
백준 2566번 파이썬 풀이 : 최댓값 (0) | 2021.10.08 |
백준 1158번 파이썬 풀이 : 요세푸스 문제 (0) | 2021.10.07 |
백준 1094번 파이썬 풀이 : 막대기 (0) | 2021.10.07 |
Comments