Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 우분투
- AI 경진대회
- 프로그래머스
- programmers
- Git
- Baekjoon
- SW Expert Academy
- ubuntu
- 파이썬
- 데이콘
- 자연어처리
- 백준
- ChatGPT
- 금융문자분석경진대회
- Real or Not? NLP with Disaster Tweets
- PYTHON
- leetcode
- github
- 편스토랑 우승상품
- gs25
- dacon
- 캐치카페
- 프로그래머스 파이썬
- 편스토랑
- 더현대서울 맛집
- hackerrank
- 맥북
- Kaggle
- Docker
- 코로나19
Archives
- Today
- Total
솜씨좋은장씨
[Programmers] 다항식 더하기 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 다항식 더하기 입니다.
👨🏻💻 문제 풀이
1. 다항식을 유일한 연산자인 + 로 나누어 앞에서부터 항을 하나씩 꺼내옵니다.
for variable in polynomial.split(" + "):
2. 꺼내온 항이 숫자로 구성되어있는지 숫자와 문자로 구분되어있는지 비교합니다.
2-1. 만약 숫자와 문자로 구성되어있는 항 일 경우
if not variable.isnumeric():
variable_name = variable[-1]
variable_num = int(variable[:-1]) if variable[:-1] != '' else 1
if variable_name not in calc_dict:
calc_dict[variable_name] = 0
이 문제에서 주어지는 항에 있는 변수는 x 이면서 맨 뒤에 존재하므로 맨 마지막 값을 꺼내와서 변수명으로 하고
그 앞의 값들을 int 로 바꾸어 변수의 숫자로 만들어주었습니다.
이때 변수 x 앞에 숫자가 없을 경우에는 1을
만약 "3x"일 경우 -> variable_name 은 "3x" 의 맨 뒤 값인 x 나머지 값을 int 로 변환하여 variable_num 으로
만약 "x" 일 경우 -> variable_name 은 "x" 의 맨 뒤 값인 x 그 앞 나머지 값은! 없으므로 1을 variable_num 으로
설정했습니다.
새로운 variable_name 이 생길때마다
calc_dict dictionary 에 variable_name 을 key 로 하고 value 를 0 으로 설정하였습니다.
각 항마다 나오는 variable_name 을 key 로 calc_dict 에 있는 값에 variable_num 을 계속 더해주었습니다.
2-2. 숫자로만 구성되어있는 항 일 경우
else:
if '' not in calc_dict:
calc_dict[''] = 0
calc_dict[''] += int(variable)
숫자로 구성되어있는 경우에는 calc_dict 에 '' 을 key 로 value 를 0으로 설정한 뒤 해당 값에 계속 더해주었습니다.
3. calc_dict 을 활용하여 계산한 다항식을 완성합니다.
" + ".join([f"{v if v > 1 else ''}{k}" if k != '' else f"{v}" for k, v in sorted(calc_dict.items(), key=lambda x: x[0], reverse=True)])
이때 x 앞의 값이 1일때를 고려하였습니다.
👨🏻💻 코드 ( Solution )
def solution(polynomial):
calc_dict = {}
for variable in polynomial.split(" + "):
if not variable.isnumeric():
variable_name = variable[-1]
variable_num = int(variable[:-1]) if variable[:-1] != '' else 1
if variable_name not in calc_dict:
calc_dict[variable_name] = 0
calc_dict[variable_name] += variable_num
else:
if '' not in calc_dict:
calc_dict[''] = 0
calc_dict[''] += int(variable)
return " + ".join([f"{v if v > 1 else ''}{k}" if k != '' else f"{v}" for k, v in sorted(calc_dict.items(), key=lambda x: x[0], reverse=True)])
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[Programmers] 순서쌍의 개수 (Python) (0) | 2023.03.03 |
---|---|
[Programmers] 숨어있는 숫자의 덧셈 (2) (Python) (0) | 2023.03.02 |
[Programmers] 피자 나눠 먹기 (3) (Python) (0) | 2023.02.28 |
[Programmers] 문자열 계산하기 (Python) (0) | 2023.02.27 |
[BaekJoon] 6581번 : HTML (Python) (0) | 2023.02.26 |
Comments