728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120863#
내 풀이
def solution(polynomial):
x_num, num = 0, 0
# 동류항의 상수를 뽑아내기 위한 for문
for i in polynomial.split(' '):
# x가 있는 항일 때
if 'x' in i:
# x를 제거한 값이 빈 값이 아니면.. (ex. 4x) 숫자만 x_num에 추가
if i[:-1] != "":
x_num += int(i[:-1])
# x를 제거했을 때 비어있으면 (ex. x) 1을 x_num에 추가
else:
x_num += 1
# 연산자가 아닐 때는 상수항의 값을 num에 저장
elif i != "+":
num += int(i)
# 일차항 계산
if x_num == 1:
x_num = "x"
elif x_num > 1:
x_num = str(x_num) + "x"
else:
x_num = ""
# 상수항 계산
if num == 0:
num = ""
elif x_num == "":
num = str(num)
else:
num = " + " + str(num)
return x_num+num
먼저 주어진 수식은 "3x + 7 + x"와 같이 공백을 기준으로 연산자와 일차항, 상수항이 구분되어 있으므로,
공백을 기준으로 각 원소를 순회한다.
이때, 원소가 x를 포함한 원소일 때는 그 값이 nx 형태인지, x 형태인지 나눠 숫자값만을 x_num에 추가한다.
(nx 형태일 때는 n 값을 추가하고, x 형태일 때는 1 값을 추가한다. )
또한, 원소가 연산자가 아닌 상수항일 때는 그 값을 num에 추가한다.
이제, x_num에는 x항의 상수값이, num에는 상수항의 상수값이 담긴다.
일차항은
x_num이 1이면 그냥 x,
x_num이 1보다 크면 nx 형태,
x_num이 0이면 빈 값("")
으로 바꾸어 다시 저장한다.
상수항의 경우
num이 0이면 빈 값(""),
일차항이 빈 값일 때는 상수항만 있으므로 상수항만을 반환,
일차항이 존재하면 "+ n" 형태로
바꾸어 저장한다.
그 후, answer로 x_num과 num을 연결지은 문자열을 반환한다.
느낀점
8점짜리 문제였다!
생각할게 너무 많은 문제인듯!!!!!!!!!!!!👿🤬
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 안전지대 (0) | 2024.03.15 |
---|---|
[프로그래머스][PYTHON] Lv. 0 숨어있는 숫자의 덧셈 (2) (0) | 2024.03.14 |
[프로그래머스][PYTHON] Lv. 0 최댓값 만들기 (2) (0) | 2024.03.13 |
[프로그래머스][PYTHON] Lv. 0 캐릭터의 좌표 (0) | 2024.03.12 |
[프로그래머스][PYTHON] Lv. 0 직사각형 넓이 구하기 (0) | 2024.03.11 |