2022년 2월 19일 토요일 - 아니 어제 오늘 문제 너무 어렵네...
오늘 올려볼 문제는 343번 Integer Break 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 못풀어서 다른 문제를 가지고 왔다.
아니 이틀 연속으로 오늘의 문제를 못풀지는 몰랐지... 그래서 다른 문제라도 올려야겠다 싶어서 올림... ㅋㅋㅋㅋ
입력
사진에서도 볼 수 있듯이 int 값 하나가 입력으로 들어온다.
풀이 및 코드
어떤 수들의 합이 n인 수들의 합이나 곱중에서 가장 큰 값을 찾고 리턴하는 문제다.
오늘은 처음부터 정답을 생각해냈다.
일단 합이 n이 될 수 있는 수들의 개수는 2 ~ n 개이다.
즉 개수로 n을 나누고 나머지를 1씩 배분해주고 계산하면 답을 얻을 수 있다.
예를 들어 n은 11이고 개수는 3이라고 하면 각 수들을 3을 가지고 나머지가 2이므로 2개의 수에다가 1씩 더하면 3 4 4 가 될 것이다.
즉 (몫^(개수 - 나머지))*((몫 + 1)^나머지)를 계산하면서 최대값을 찾으면 된다.
이제 코드를 봐보자!
풀이코드
class Solution {
public int integerBreak(int n) {
int max = 0;
for(int i = 2; i <= n; i++)
{
int share = n / i;
int remain = n % i;
int result = (int)(Math.pow(share , i - remain) * Math.pow(share + 1 , remain));
if(result > max)
{
max = result;
continue;
}
break;
}
return max;
}
}
제출 화면
오늘과 어제는 문제를 못풀었어서 너무 스트레스 받았다. 사실 내 실력이 부족한 거였지만 뭐랄까 나에게 화가 나는 기분이었다...
아무렴 어때 앞으로 잘하면 된다.
이번 실패를 기억하고 앞으로는 더욱 잘해볼 것이다.
내일은 문제를 풀어서 오늘의 문제로 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
[LeetCode] 169번 문제를 풀어보았다. (ft. java) (0) | 2022.02.21 |
---|---|
[LeetCode] 1288번 문제를 풀어보았다. (ft. java) (0) | 2022.02.20 |
[LeetCode] 39번 문제를 풀어보았다. (ft. java) (0) | 2022.02.17 |
[LeetCode] 80번 문제를 풀어보았다. (ft. java) (0) | 2022.02.16 |
[LeetCode] 136번 문제를 풀어보았다. (ft. java) (0) | 2022.02.15 |