반응형
문제분석:
카카오문제다. 카카오 1단계=프로그래머스 2단계라고 생각하면된다.
문자열 s에 숫자와 영어가 섞여있다. 이 문자열 s를 모두 숫자로 바꿔달라는 문제다.
문제풀이:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String temp ="";
String word ="";
HashMap<String,Integer> dic = new HashMap<>();
dic.put("zero",0);
dic.put("one",1);
dic.put("two",2);
dic.put("three",3);
dic.put("four",4);
dic.put("five",5);
dic.put("six",6);
dic.put("seven",7);
dic.put("eight",8);
dic.put("nine",9);
for(int i=0; i<s.length();i++){
if(s.charAt(i)<58){
temp=temp+s.charAt(i);
}
else{
word=word+s.charAt(i);
}
if(dic.containsKey(word)){
temp=temp+dic.get(word);
word="";
}
}
answer=Integer.parseInt(temp);
return answer;
}
}
|
cs |
맨 처음 문제보고 생각난 방식대로 풀었다.
우선 영문자들을 HashMap에 넣고싶었다. key를 영단어, value를 바꿔줄 숫자
그리고 문자열 s를 한문자씩 순회하면서, 숫자라면 temp에 넣는다.
영어라면, word에 넣는다.
영문자를 넣다가 word가 HashMap Key에 걸린다면, word를 숫자로 바꿔서 temp에 넣는다.
temp는 숫자로된 문자열 이기때문에, Int형으로 바꿔서 answer에 집어넣었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String t="one";
String[] words = {"zero","one","two","three",
"four","five","six","seven",
"eight","nine"};
for(int i=0;i<words.length;i++){
String num=i+"";
s=s.replace(words[i],num);
}
answer=Integer.parseInt(s);
return answer;
}
}
|
cs |
다른사람의 풀이를 보고 코드를 다시 짜보았다.
words에 영단어를 넣어주고 words에 위치값을 반환할 숫자로 대체하는것이었다.
이방법을 사용해, words를순회하며, num으로바꿔준다.
11라인의 String num=i+""; 를 한이유는, i는 int형이기때문에 String으로 변환시켜야한다.
replace는 바꿀 타입과 바뀐타입이 같아야만 한다.
i+"" 를 하면, int+String인데 이렇게 작성하면 자바가 알아서 String으로 바꿔준다.
num대신에 Integer.toString(i)를 작성해도 된다.
P.S 처음짠코드와 리팩토링한 코드의 실행속도는 비슷했다.
반응형
'알고리즘 > 프로그래머스 Level1' 카테고리의 다른 글
[프로그래머스,자바] Level1 : 3진법 뒤집기 (0) | 2021.08.10 |
---|---|
[프로그래머스,Java] Level1: 위클리챌린지 2주차 (0) | 2021.08.09 |
[프로그래머스,Java] Level1: 내적 (0) | 2021.08.07 |
[프로그래머스,Java] Level1: 음양 더하기 (0) | 2021.08.07 |
[프로그래머스,java] Level1: 체육복 (2021년 7월 28일 업데이트버전) (3) | 2021.08.06 |