학습/프로그래머스
[프로그래머스] 숫자 문자열과 영단어(java)
태기
2023. 2. 2. 18:55
문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
class Solution {
public int solution(String s) {
int answer = 0;
String[] number = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
for (int i = 0; i < number.length; i++) {
if (s.contains(number[i])) {
s = s.replaceAll(number[i], "" + i);
}
}
answer = Integer.parseInt(s);
return answer;
}
}
zero ~ nine까지 s 문자열에 있는지 확인하고 있으면 알맞은 숫자로 바꿔준다. 단순히 반복문이라서 선형이라 생각할 수 있지만, number 배열은 고정된 객체이고 입력에 따라 변하지 않기 때문에 증가 차수가 상수이다.
반복문 내부에 있는 contains 메서드가 선형이고 그 안에 문자열을 바꿔주는 replaceAll 메서드도 마찬가지로 선형이다. 이 반복문은 2O(n)의 시간 복잡도를 가지고 있고 따라서 선형이다.