https://www.acmicpc.net/problem/1755
문제를 풀면서 몰랐던 개념
(1) [Python] join 함수
-> 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수이다.
ex) ''.join(리스트)
['a', 'b', 'c'] 이런 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수!
a = ['one2ye', 'loves', '20s']
print(a)
print()
# 리스트를 공백을 두고 합치기
result1 = ' '.join(a)
print(result1)
# 리스트를 문자열로 합치기
result2 = '_'.join(a)
print(result2)
# 출력 결과
>>> ['one2ye', 'loves', '20s']
>>>
>>> one2ye loves 20s
>>> one2ye_loves_20s
(2) [Python] 출력문 print(sep = "", end = "")
-> 파이썬의 출력문은 print를 사용하며, 두 개의 옵션을 사용할 수 있다.
- sep = " " : print문의 출력문들 사이에 해당하는 내용을 넣을 수 있다. 기본 값으로는 공백이 들어가있으며 '\n'를 넣어서 줄바꿈을 할 수도 있다.
- end = " " : print문을 이용해 출력을 완료한 뒤의 내용을 수정할 수 있다. 기본 값으로는 개행(\n)이 들어가있으며 개행을 없애거나 원하는 문자를 입력할 수 있다.
문제의 접근 방법
- 띄어쓰기로 구분하여 리스트 요소만 추출할 수 있는 join 함수 사용
- 딕셔너리[key]를 사용하여 value값에 접근 가능
내가 막혔던 부분
- 무엇을 기준으로 정렬해야 할 지
- 정수를 문자열로 변환하여 두 숫자를 분리하는 방법
- 출력 형식에 맞게 출력하기 (10개 단위로 줄바꿈을 해서 출력하는 방법)
문제 풀이 방법
(1) m, n 값을 정수형으로 변환하여 입력 받는다.
(2) 딕셔너리 dic 에 키 값은 숫자, value 값은 영어(문자)로 갖는 쌍을 저장한다.
(3) m, n+1 사이 범위의 숫자들을 가지고 i 값을 문자열로 형변환 하여 dic[key]값을 이용해서 value를 찾아낸다.
(4) 찾아낸 값을 2차원 배열로 묶어서 리스트 arr에 저장해준다.
(5) 두 번째 값(알파벳) 을 기준으로 정렬해준다.
(6) 10개씩 출력해야 하므로 i를 10으로 나누었을 때 나누어 떨어지면 줄바꿈을 하도록 해준다.
(7) 출력 형식에 맞춰서 출력!
소스코드
m,n = map(int, input().split())
dic = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five',
'6':'six', '7':'seven', '8':'eight', '9':'nine', '0':'zero'}
arr = []
for i in range(m, n+1):
a = ' '.join([dic[j] for j in str(i)])
arr.append([i,a])
arr.sort(key=lambda x:x[1])
for i in range(len(arr)):
if i%10 == 0 and i != 0:
print(sep="\n")
print(arr[i][0], end=" ")
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 소가 길을 건너간 이유 3 : 14469번 - Python (0) | 2021.07.27 |
---|---|
[백준] 스네이크 버드 : 16435번 - Python (0) | 2021.07.26 |
[백준] 정열적인 정렬 : 16212번 - Python (0) | 2021.07.22 |
[백준] 먹을 것인가 먹힐 것인가 : 7795번 - Python (0) | 2021.07.22 |
[백준] 2+1 세일 : 11508번 - Python (0) | 2021.07.22 |