https://school.programmers.co.kr/learn/courses/30/lessons/120863
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Algorithm
Idea
언뜻 간단해보였지만... 경우의 수를 꼼꼼히 따져 출력해내야 하는 문제였다ㅠㅠ. 늘 손코딩 먼저 꼼꼼히 작성하자!
각 항을 돌며 const,xnum에 경우수를 축적해준다. 그리고 xnum과 상수여부에 따라 값을 구분해 출력해준다.
Python
def solution(polynomial):
xnum = 0
const = 0
for c in polynomial.split(' + '):
if c.isdigit():
const+=int(c)
else:
print(c)
xnum = xnum + 1 if c=='x' else xnum+int(c[:-1])
if xnum == 0:
return str(const)
elif xnum == 1:
return 'x + '+str(const) if const!=0 else 'x'
else:
return f'{xnum}x + {const}' if const!=0 else f'{xnum}x'
return answer
Java
class Solution {
public String solution(String polynomial) {
int xCount = 0;
int num = 0;
for(String s : polynomial.split(" \\+ ")) {
if (s.contains("x")) { // "x"를 포함하는지 확인
// s가 "x"인지 확인하고, 아니라면 "x"를 제외한 부분을 정수로 변환하여 xCount에 더함
xCount = (s.equals("x")) ? xCount + 1 : xCount + Integer.parseInt(s.substring(0, s.length() - 1));
} else {
num += Integer.parseInt(s); // x를 포함하지 않는 경우, 정수로 변환하여 num에 더함
}
}
if (xCount == 0) {
return String.valueOf(num); // num을 문자열로 변환하여 반환
} else if (xCount == 1) {
return (num != 0) ? String.format("x + %d", num) : "x";
} else {
return (num != 0) ? String.format("%dx + %d", xCount, num) : String.format("%dx", xCount);
}
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 과제 진행하기 (PYTHON, JAVA) (0) | 2024.09.26 |
---|---|
[Programmers] 이진수 더하기 (모듈 사용 X) (PYTHON, JAVA) (0) | 2024.04.09 |
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (2) | 2024.03.31 |
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (0) | 2024.03.31 |
[Programmers] 소인수분해 (PYTHON, JAVA) (0) | 2024.03.07 |