[golang] LeetCode #1323. Maximum 69 Number

kameals·2020년 1월 19일
0

leetcode

목록 보기
9/14
post-thumbnail

1. 문제

Given a positive integer num consisting only of digits 6 and 9.

Return the maximum number you can get by changing at most one digit (6 becomes 9, and 9 becomes 6).

Example 1:

Input: num = 9669
Output: 9969
Explanation: 
Changing the first digit results in 6669.
Changing the second digit results in 9969.
Changing the third digit results in 9699.
Changing the fourth digit results in 9666. 
The maximum number is 9969.

Example 2:

Input: num = 9996
Output: 9999
Explanation: Changing the last digit 6 to 9 results in the maximum number.

Example 3:

Input: num = 9999
Output: 9999
Explanation: It is better not to apply any change.

Constraints:

1 <= num <= 10^4
num's digits are 6 or 9.

해설

6과 9만으로 이루어진 양수 num이 주어진다.
최대 하나의 수만 변경하여 얻을 수 있는 최대 숫자를 반환한다. (6은 9로, 9는 6으로)

2. 접근

// 가장 큰 수부터 확인하여 처음으로 나오는 6을 9로 바꾸면 될 것 같다. 
// 어떻게 첫 번째로 등장하는 6을 구할 것인가가 문제 해결의 포인트.
// go에서 제공하는 Replace는 n번째 등장하는 값을 치환하는 기능을 제공하므로, 활용한다.

3. 내가 작성한 답

func maximum69Number (num int) int {
    str := strconv.Itoa(num)
	str = strings.Replace(str, "6", "9", 1)
	result, _ := strconv.Atoi(str)
	return result
}

4. 다른 유저의 답안

내 접근과 동일했다.

5. 추가로 공부한 내용

int를 문자로 바꾸는데 ItoA()를 사용함
그 결과 문자열이 되지만, 각 자릿값을 확인하면 ASCII로 되어있음
그 값을 다시 원하는 문자열로 변환하려면 string()을 사용해야 함
range는 기존 배열/슬라이스 값을 복사한다

6. 활용사이트

https://stackoverflow.com/questions/15945030/change-values-while-iterating
내 블로그 - [golang] #7. 반복문 값을 변경할 때 발생하는 문제(range는 어떻게 동작하는가)

profile
팀의 윤활유 역할이 되고 싶은 소박한 개발자입니다. 좌우명은 '밝고 바르고 튼튼하자'

0개의 댓글