1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- 숫자 사이에 x 혹은 + 연산자를 넣어 만들 수 있는 가장 큰 수를 구하라 - 주어진 자료는 무엇인가?
- s = 여러개의 숫자로 구성된 하나의 문자열
- x 혹은 + 연산자를 사용할 수 있다.
- 곱셈보다 더했을때 값이 더 큰 경우가 있다. - 조건은 무엇인가?
- 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수이다.
2. 계획
- 주어진 문자열을 쪼개면서 숫자로 바꾼다.
- 더했을때 값이 더 큰 경우 더한다.
- 곱했을때 값이 더 큰 경우 곱한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (s) => {
// 주어진 문자열을 쪼개면서 숫자로 바꾼다.
const numbers = s.split('').map((it) => Number(it));
// 각 숫자를 순회하면서 곱한다
// 더했을때 값이 더 큰 경우 더한다.
// 곱했을때 값이 더 큰 경우 곱한다.
const acc = numbers.reduce((acc, cur) => {
const acc = numbers.reduce((acc, cur) => {
if (acc + cur > acc * cur) {
return acc + cur
} else {
return acc * cur
}
})
return acc
}
test('countGroup', () => {
expect(solution('02984')).toEqual(576);
expect(solution('567')).toEqual(210);
});
4. 반성
- 처음에는 숫자가 0일때만 곱셈보다 더한값이 더 크다고 생각하고 풀었는데 0뿐만이 아니라 덧셈이 곱셈보다 더 값이 큰 경우가 있었다. 그래서 덧셈이 곱셈한 값 보다 클 경우 더해줬고 그렇지 않은 경우에는 곱했다.
'코테연습' 카테고리의 다른 글
134. 다음 큰 숫자 Javascript (0) | 2022.09.14 |
---|---|
133. 이것이 코딩 테스트다 : 11장 문자열 뒤집기 Javascript (0) | 2022.09.14 |
131. 이것이 코딩 테스트다 : 11장 모험가 길드 Javascript (0) | 2022.09.14 |
130. 숫자의 표현 Javascript (0) | 2022.09.13 |
129. 이상한 문자 만들기 Javascript (0) | 2022.09.12 |
댓글