728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://leetcode.com/problems/maximum-69-number/
문제 설명
6과 9로 이루어진 정수(num)가 있습니다.
단 한 자리만 바꿔 가장 큰 수를 반환합니다.
1 <= num <= 10^4
풀이 방법
문제 내 num의 범위를 활용하였습니다. ( 1 <= num <= 10000)
최대 수는 9999 이므로 1000부터 나누기 시작합니다.
1000의 자리부터 가져오고 가장 먼저 나온 6을 9로 바꿔줍니다.
이때, 해당 자리값 X 3을 더해주면 끝입니다.
Input : 6999 / 9969
Output : 6999 + 3000 = 9999 / 9969 + 30 = 9999
내 코드(JAVA)
/**
* 문제 내 1 <= num <= 10^4 인 점을 활용
* 제일 큰 자리수로 6이 나오면 그 수를 바꿔주면 끝
* 9969 > 9969 + 30 = 9999
*/
public int maximum69Number (int num) {
int res = num;
int x = 1000;
while(num > 0) {
if(num/x == 6) {
res += x*3;
break;
}
num = num%x;
x /= 10;
}
return res;
}
다른 사람 코드
public int maximum69Number (int num) {
return Integer.parseInt(("" + num).replaceFirst("6", "9"));
}
replaceFirst 메서드를 이용한 방법
String + int = String 이기 때문에 정수형 num을 String으로 형 변환합니다.
첫 번째로 나오는 6을 찾아 9로 변경하여 반환하면 끝.
깔끔하네요!
728x90
반응형
'알고리즘' 카테고리의 다른 글
[LeetCode/JAVA] 103. Binary Tree Zigzag Level Order Traversal (0) | 2021.07.20 |
---|---|
[LeetCode/JAVA] 70. Climbing Stairs (0) | 2021.07.20 |
[LeetCode/JAVA] 226. Invert Binary Tree (0) | 2021.07.18 |
[LeetCode/JAVA] 617. Merge Two Binary Trees (0) | 2021.07.18 |
[LeetCode/JAVA] 58. Length of Last Word (0) | 2021.07.18 |
댓글