문제
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)의 시간 복잡도를 가지고 있고 따라서 선형이다.
'학습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위(java) (0) | 2023.02.02 |
---|---|
[프로그래머스] 약수의 개수와 덧셈(java) (0) | 2023.02.02 |
[프로그래머스] 신고 결과 받기(java) (0) | 2023.02.02 |
[프로그래머스] 성격 유형 검사하기(java) (0) | 2023.02.02 |
[프로그래머스] 햄버거 만들기(java) (0) | 2023.02.02 |