제이슨의 개발이야기
프로그래머스 숫자 문자열과 영단어 Kotlin 2021 카카오 채용연계형 인턴십 본문
https://programmers.co.kr/learn/courses/30/lessons/81301
안녕하세요 오늘은 프로그래머스 에서 숫자 문자열과 영단어 문제를 풀어봤습니다!
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 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 | nine |
제한사항
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
입출력 예
s | result |
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
제가 그동안 카카오에서 나온 코테 문제들 중에 가장 쉬웠던 문제였던거 같습니다
이런 문제는 물론 정답을 맞추는 것도 중요하지만 빠르게 푸는 능력이 중요한거 같습니다!
저는 이 문제를 반복문을 통해 문자열을 하나씩 자르면서 다른 변수에 붙이면서 그 값이 어떤 숫자인지 찾아야 겠다 란 생각을 하고 문제를 풀었습니다!
str이란 변수를 하나 만들고
s를 하나씩 자르면서
그 값이 숫자가 아니면 str변수에 붙이면서
어떤 숫자 단어인지 찾고 one~nine중에 하나라면 해당 숫자를 더하고 str=""로 다시 초기화 시킵니다
이때 중요한 점은 answer==0 인 경우 에는 그냥 더하고
0이 아닐때는 *10 해줘야 합니다!
10을 곱하지 않으면 "123" 이란 문자는 6의 결과 값이 나오기 때문입니다!
그래서 '1' , '2' , '3' 이
0+1=1
1*10+2 = 12
12*10 +3 =123
이런식의 로직 처리가 이루어저야합니다!
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
var str = ""
for(i in 0..s.length-1){
str += s[i]
if(s[i].toInt() in 48..57){
if(answer==0){
answer += Integer.parseInt(str)
}else{
answer = answer*10 + Integer.parseInt(str)
}
str=""
} else if(str.equals("zero")){
if(answer==0){
answer = answer+0
}else{
answer = answer*10+0
}
str = ""
}else if(str.equals("one")){
if(answer==0){
answer = answer+1
}else{
answer=answer*10+1
}
str=""
}else if(str.equals("two")){
if(answer==0){
answer = answer+2
}else{
answer = answer*10+2
}
str = ""
}else if(str.equals("three")){
if(answer==0){
answer= answer+3
}else{
answer = answer*10+3
}
str = ""
}else if(str.equals("four")){
if(answer==0){
answer =answer+4
}else{
answer = answer*10+4
}
str = ""
}else if(str.equals("five")){
if(answer==0){
answer = answer+5
}else{
answer = answer*10+5
}
str = ""
}else if(str.equals("six")){
if(answer==0){
answer = answer+6
}else {
answer = answer*10+6
}
str = ""
}else if(str.equals("seven")){
if(answer==0){
answer = answer+7
}else {
answer = answer*10+7
}
str = ""
}else if(str.equals("eight")){
if(answer==0){
answer= answer+8
}else {
answer = answer*10+8
}
str = ""
}else if(str.equals("nine")){
if(answer==0){
answer = answer+9
}else{
answer= answer*10+9
}
str = ""
}
}
return answer
}
}
'코딩테스트' 카테고리의 다른 글
프로그래머스 최댓값 과 최소값 코틀린 kotlin (0) | 2021.08.24 |
---|---|
[프로그래머스] 가장 큰 수 Kotlin (0) | 2021.08.21 |
신규 아이디 추천 2021 KAKAO BLIND RECRUITMENT Kotlin (0) | 2021.08.18 |
프로그래머스 콜라츠 추측 Kotlin (2) | 2021.08.16 |
프로그래머스 위클리 2주차 문제 상호 평가 Kotlin (0) | 2021.08.14 |