728x90
숫자놀이 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 128 MB | 4896 | 2984 | 2634 | 63.746% |
문제
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.
문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.
입력
첫째 줄에 M과 N이 주어진다.
출력
M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.
예제 입력 1 복사
8 28
예제 출력 1 복사
8 9 18 15 14 19 11 17 16 13
12 10 28 25 24 21 27 26 23 22
20
기본적으로 숫자리스트를 만들어서 영어로 바꾸고, 영어로 바꾼걸 정렬 후, 숫자로 바꿔서 저장했다.
딕셔너리 자료형을 사용해 풀었다.
#1755 숫자놀이
numstring = {"0":"zero","1":"one","2":"two","3":"three","4":"four","5":"five","6":"six","7":"seven","8":"eight","9":"nine"}
stringnum = {"zero":"0","one":"1","two":"2","three":"3","four":"4","five":"5","six":"6","seven":"7","eight":"8","nine":"9"}
li = []
newList = []
n,m = map(int,input().split())
for i in range(n,m+1):#숫자를 영어로 바꿈
i = str(i)
if int(i)>9:
li.append([numstring[i[0]],numstring[i[1]]])
else:
li.append([numstring[i[0]]])
li.sort()#정렬
for i in li:#영어를 숫자로 바꿈
if len(i) == 2:
s = stringnum[i[0]] + stringnum[i[1]]
newList.append(int(s))
else:
s = stringnum[i[0]]
newList.append(int(s))
for i in range(len(newList)):#출력, 여기서 10개씩 출력해야함. 이 부분에서 한번 틀림
if i % 10 == 0 and i != 0:
print("")
print(newList[i],end=" ")
비교적 간단한 문제.
728x90
'Study > CodingTest' 카테고리의 다른 글
[백준/Python] (G5)10026 - 적록색약 (0) | 2023.07.26 |
---|---|
[백준/Python] (G5)5430 - AC (0) | 2023.07.25 |
[백준/Python] (S2) 1198 - 삼각형으로 자르기 (0) | 2023.07.13 |
[백준/Python] (S4) 17218 - 비밀번호 만들기 (0) | 2023.07.08 |
[백준/Python] (S4)11399 - ATM (0) | 2023.07.08 |