늘 겸손하게

LeetCode Q - Maximum 69 Number (Java) 본문

코딩 문제/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. 주어진 numString 클래스 객체 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

 


결론

 

원본의 데이터를 변형하여 풀 수 있는지부터 확인해보자