코딩 문제/LeetCode
LeetCode Q - Maximum 69 Number (Java)
besforyou999
2021. 2. 21. 14:10
Question number 1323
Q : Maximum 69 Number
문제 해설
6과 9로만 이루어진 음수가 아닌 정수 num이 주어졌을 때
숫자를 최대 1 자리를 바꾸어 만들 수 있는 정수 중 가장 큰 정수를 반환하라
제한 사항
- 1 <= num <= 10^4
- num은 6과 9로만 이루어져 있다
문제 풀이
1. 주어진 num을 String 클래스 객체 testString로 바꾼다.
2. testString의 각 문자를 정수로 변환하여 정수형 배열 testarr에 대입한다.
3. 정수형 배열 testarr의 원소중 첫 번째로 나오는 6을 9로 바꾼다.
4. 정수형 배열 testarr의 각 원소를 정수로 조합한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Solution {
public int maximum69Number (int num) {
String testString = Integer.toString(num);
int [] testarr = new int[testString.length()];
for (int i = 0; i < testString.length(); i++) {
testarr[i] = testString.charAt(i) - '0';
}
for (int i = 0; i < testarr.length ; i++) {
if (testarr[i] == 6) {
testarr[i] = 9;
break;
}
}
int result = 0;
for (int i = 0; i < testarr.length; i++) {
result += testarr[i] * Math.pow(10,testarr.length - i -1);
}
return result;
}
}
|
cs |
결과
Runtime : 0ms , beats 100.00% of java submissions
Memory usage : 36.1 MB , beats 39.97% of java submissions
메모리 사용량이 아쉽다.
더 좋은 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Solution {
public int maximum69Number (int num) {
int temp = num;
int add = 3;
int answer = num;
while (temp > 0) {
int currentDigit = temp % 10;
if (currentDigit == 6) {
answer = num + add;
}
add *= 10;
temp /= 10;
}
return answer;
}
}
|
cs |
Runtime : 0ms , beats 100.00% of java submissions
Memory Usage : 35.9 MB, beats 65.53 % of java submissions
결론
원본의 데이터를 변형하여 풀 수 있는지부터 확인해보자