[PS]Programmers/코딩테스트입문/Lv0/Day15: 영어가 싫어요
2023. 5. 3. 16:00ㆍ✨ PS(ProblemSolving)
문제
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers는 소문자로만 구성되어 있습니다.
numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
1 ≤ numbers의 길이 ≤ 50
"zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067
시도
- for문 + if문으로 처음 두 문자가 'ze'면 0을 answer에 추가하는 방법
=> 너무 NGD가 심해서 좀 더 간단한 방법을 찾아봄
GPT가 만들어준 코드
function solution(numbers) {
var answer = '';
const numberMap = {
zero: 0,
one: 1,
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9
}
for (i = 0; i < numbers.length; i++) {
for (let key in numberMap) {
if (numbers.startsWith(key, i)) {
answer += numberMap[key]
i += key.length - 1
break
}
}
}
return parseInt(answer);
}
- numberMap Dic.을 만든 다음에, startsWith() 함수로 미리 적어 둔 숫자가 있을 시 answer에 추가하고 index를 resetting
내가 생각한 것보다 조금 더 간단한 방법을 쓴 GPT... 주인을 뛰어 넘으란 말이야.... 생각보다 멍청....ㅋㅋㅋㅋ
다른 사람이 작성한 코드
function solution(numbers) {
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
for(let i = 0 ; i<number.length; i++){
numbers = numbers.split(number[i]).join(i)
}
return +numbers
}
지식줍줍
- .startsWith(searchString, position)
👉🏻 string이 () 내용으로 시작하면 true를 반환하는 JS method
const str = "To be, or not to be, that is the question.";
console.log(str.startsWith("To be")); // true
console.log(str.startsWith("not to be")); // false
console.log(str.startsWith("not to be", 10)); // true
'✨ PS(ProblemSolving)' 카테고리의 다른 글
[PS]Programmers/코딩테스트 연습/연습문제/문자열 내 마음대로 정렬하기 (0) | 2023.05.23 |
---|---|
[PS]Programmers/코딩테스트입문/Lv0/Day15: 한번만 등장한 문자 (0) | 2023.05.04 |
[PS]Programmers/Lv0/Day11 (0) | 2023.05.01 |
[PS] Programmers/LV0/Day6: 문자열 뒤집기 (0) | 2023.04.27 |
[PS] Programmers/LV0/Day4: 수학, 배열 (0) | 2023.04.26 |