일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gs25
- 캐치카페
- hackerrank
- ChatGPT
- leetcode
- dacon
- 프로그래머스
- 백준
- Git
- 데이콘
- ubuntu
- Kaggle
- PYTHON
- 프로그래머스 파이썬
- programmers
- 금융문자분석경진대회
- 편스토랑
- 맥북
- AI 경진대회
- 우분투
- 편스토랑 우승상품
- 자연어처리
- github
- Baekjoon
- SW Expert Academy
- Docker
- 코로나19
- Real or Not? NLP with Disaster Tweets
- 더현대서울 맛집
- 파이썬
- Today
- Total
솜씨좋은장씨
[BaekJoon] 1755번 : 숫자놀이 (Python) 본문

코딩 1일 1문제! 오늘의 문제는 백준의 숫자놀이 입니다.
백준의 숫자놀이를 파이썬으로 풀이하였습니다.
1755번: 숫자놀이
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로
www.acmicpc.net
👨🏻💻 문제 풀이
입력으로 시작 번호와 끝 번호를 주면
그 사이의 숫자들을 문자로 표현한 값의 순서대로 정렬하고 한 줄에 10개씩 출력하는 문제입니다.
먼저 각 숫자를 문자로 바꾸기 위한 dictionary 값을 하나 만들어주었습니다.
number_dict = {
"1": "one", "2": "two", "3": "three", "4": "four", "5": "five",
"6": "six", "7": "seven", "8": "eight", "9": "nine", "0": "zero",
}
이 값을 활용하여 숫자를 문자로 바꾸어주는 함수를 하나 만들었습니다.
def num2string(number, number_dict):
result = []
for num in number:
result.append(number_dict[num])
return " ".join(result)
그 다음 입력 받은 숫자 사이의 숫자 값을 하나씩 꺼내와 문자로 바꿔줍니다.
바꿔준 값을 기준으로 정렬하고
이를 10개씩 꺼내와 출력하면 끝!
num1, num2 = map(int, string.split())
str_num_list = [(str(num), num2string(str(num), number_dict)) for num in range(num1, num2 + 1)]
str_num_list = [num[0] for num in sorted(str_num_list, key=lambda x: x[1])]
for i in range(len(str_num_list) // 10):
temp = " ".join([num for num in str_num_list[i*10: (i+1)*10]])
print(temp)
if len(str_num_list) % 10 != 0:
temp = " ".join([num for num in str_num_list[-1 * ((len(str_num_list)) % 10):]])
print(temp)
이때 10개씩 꺼내오다가 마지막에 10개가 되지 않는 값은
str_num_list[-1 * ((len(str_num_list)) % 10):]
슬라이싱 방법으로 맨 뒤에서 남은 개수만큼 꺼내왔습니다.
전체 코드는 아래를 참고해주세요.
👨🏻💻 코드 ( Solution )
def num2string(number, number_dict):
result = []
for num in number:
result.append(number_dict[num])
return " ".join(result)
def play_number(string, number_dict):
num1, num2 = map(int, string.split())
str_num_list = [(str(num), num2string(str(num), number_dict)) for num in range(num1, num2 + 1)]
str_num_list = [num[0] for num in sorted(str_num_list, key=lambda x: x[1])]
for i in range(len(str_num_list) // 10):
temp = " ".join([num for num in str_num_list[i*10: (i+1)*10]])
print(temp)
if len(str_num_list) % 10 != 0:
temp = " ".join([num for num in str_num_list[-1 * ((len(str_num_list)) % 10):]])
print(temp)
if __name__ == "__main__":
number_dict = {
"1": "one", "2": "two", "3": "three", "4": "four", "5": "five",
"6": "six", "7": "seven", "8": "eight", "9": "nine", "0": "zero",
}
string = input()
play_number(string, number_dict)
GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07
1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.
github.com
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 2804번 : 크로스워드 만들기 (Python) (0) | 2021.09.10 |
---|---|
[BaekJoon] 4458번 : 첫 글자를 대문자로 (Python) (2) | 2021.09.09 |
[BaekJoon] 4358번 : 생태학 (Python) (0) | 2021.09.07 |
[Programmers] 위클리 챌린지 6주차 - 복서 정렬하기 (Python) (0) | 2021.09.06 |
[BaekJoon] 5800번 : 성적 통계 (Python) (0) | 2021.09.05 |