728x90
조건
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
| 숫자 | 영단어 |
| 0 | zero |
| 1 | one |
| 2 | two |
| 3 | three |
| 4 | four |
| 5 | five |
| 6 | six |
| 7 | seven |
| 8 | eight |
| 9 | nune |
알고리즘 예상
- 반복문, 조건문을 이용해서 s의 원소의 조건(숫자인지 문자인지)을 확인
- 수일 경우 그대로 answer에 더하기, 문자일 경우 다른 변수 word에 더하기
- word가 영단어일 경우 answer에 더하고 초기화
초기 코드
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
return answer
}
}
내 코드
class Solution {
fun solution(s: String): Int {
var word : String = ""
var num : String = ""
for(i in s){
if(i in 'a'..'z'){
word += i
when{
word == "zero" ->{
num += '0'
word = ""
}
word == "one" ->{
num += '1'
word = ""
}
word == "two" ->{
num += '2'
word = ""
}
word == "three" ->{
num += '3'
word = ""
}
word == "four" ->{
num += '4'
word = ""
}
word == "five" ->{
num += '5'
word = ""
}
word == "six" ->{
num += '6'
word = ""
}
word == "seven" ->{
num += '7'
word = ""
}
word == "eight" ->{
num += '8'
word = ""
}
word == "nine" ->{
num += '9'
word = ""
}
}
}
else num += i
}
return num.toInt()
}
}
다른 사람의 풀이
class Solution {
fun solution(s: String): Int = s
.replace("one", "1")
.replace("two", "2")
.replace("three", "3")
.replace("four", "4")
.replace("five", "5")
.replace("six", "6")
.replace("seven", "7")
.replace("eight", "8")
.replace("nine", "9")
.replace("zero", "0")
.toInt()
}
개선점 또는 배운점
- .replace()를 전화번호 가리기에서 봤었는데 생각도 못했다. 아주 간단하게 바꿀 수 있는 문제였다.
개선된 코드
class Solution {
fun solution(s: String): Int = s
.replace("one", "1")
.replace("two", "2")
.replace("three", "3")
.replace("four", "4")
.replace("five", "5")
.replace("six", "6")
.replace("seven", "7")
.replace("eight", "8")
.replace("nine", "9")
.replace("zero", "0")
.toInt()
}728x90
'TIL > 알고리즘' 카테고리의 다른 글
| 02/15 알고리즘 공부(48) - K번째 (0) | 2024.02.15 |
|---|---|
| 02/15 알고리즘 공부(47) - 문자열 내 마음대로 정렬하기 (0) | 2024.02.15 |
| 02/14 알고리즘 공부(45) - 시저 암호 (1) | 2024.02.14 |
| 02/14 알고리즘 공부(44) - 최소 직사각형 (0) | 2024.02.14 |
| 02/13 알고리즘 공부(43) - 크기가 작은 부분문자열 (0) | 2024.02.13 |