Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- reshape
- 야학
- 데이터베이서
- 생활코딩 머신러닝야학
- 데이터베이스
- tensorflow
- 머신러닝(딥러닝)
- Python
- LeNet
- Database
- 이것이 자바다
- JavaScript
- 연산자
- pandas
- 머신러닝
- 데이터베이스 개론
- 머신러닝야학
- 개발자
- 생활코딩 데이터베이스
- 생활코딩
- flatten
- 카카오클라우드스쿨2기
- CNN
- 파이썬
- 판다스
- MySQL
- Java
- 딥러닝
Archives
- Today
- Total
IT's 우
[java, 프로그래머스숫자] 2021 카카오 채용연계형 인턴십> 문자열과 영단어, replace("","") 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/81301#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
일단 문제...풀이에 앞서...내코드는 끔찍하니.. 뒤에 코드도 확인... 내 코드는.. 그냥... 끔찍.... 남 코드는... 너무 어이없...... 컄 갱타나
보지 마세요 내 코드
보지마세요 내 코드
class Solution {
public int solution(String s) {
char[] arr=s.toCharArray();
String result="";
String num="";
for(char c:arr){
//숫자인지 확인 숫자 0은 유니코드 값 49~ 숫자 9 유니코드 값 57
if(c>=48 && c<=57){
if(num!=""){
result+=check(num);
num="";
}
result+=c;
}else{
num+=c;
}
}
if(num!=""){ //마지막에 문자로 끝났을 때 확인
result+=check(num);
num="";
}
int answer = Integer.parseInt(result);
return answer;
}
private static String check(String num){
int len = num.length();
int point = 0;
String result = "";
while (len > 0) {
if (num.charAt(point) == 'z') { // zere
point += 4;
len -= 4;
result += '0';
continue;
} else if (num.charAt(point) == 'o') {// one
point += 3;
len -= 3;
result += '1';
continue;
} else if (num.charAt(point) == 't') {// two, three
if (num.charAt(point + 1) == 'w') {// two
point += 3;
len -= 3;
result += '2';
continue;
} else { // three
point += 5;
len -= 5;
result += '3';
continue;
}
}else if (num.charAt(point) == 'f') {//four, five
if (num.charAt(point + 1) == 'o') {// four
point += 4;
len -= 4;
result += '4';
continue;
} else { // five
point += 4;
len -= 4;
result += '5';
continue;
}
}else if (num.charAt(point) == 's') {//seven,six
if (num.charAt(point + 1) == 'e') {// seven
point += 5;
len -= 5;
result += '7';
continue;
} else { // six
point += 3;
len -= 3;
result += '6';
continue;
}
}else if (num.charAt(point) == 'e') {// eight
point += 5;
len -= 5;
result += '8';
continue;
} else {//nine
point += 4;
len -= 4;
result += '9';
continue;
}
}
return result;
}
}
보지마세요 내 풀이
일단 첫 번째 생각 숫자는 그냥 숫자로, 문자는 숫자로 바꾸기
-> 문자를 숫자로 확인하기 유니코드 사용, 숫자 0의 유니코드는 48, 숫자 9의 유니코드는 57이므로 48 이상 57 이하는 숫자이므로 숫자면 그냥 붙여줌. 그래도 여기서 알아 갈 수 있는 거. 문자를 숫자로 확인할 때 유니코드 사용.
if(c>=48 && c<=57){
-> 처음에 풀 때 문자를 그냥 하나씩 확인하여 switch문으로 확인해줬다. 그러면 생기는 문제는 문자가 예: eightseven 이런 식으로 붙어있을 때 읽지.. 못하여 여기서부터 파국. 메서드 check()에서 point와 문자로 읽은 string의 길이를 사용하여 숫자를 하나 읽을 때마다 len의 길이를 다 읽을 때까지 point를 옮기며 ...노가다로 읽어줬다. 그냥 문제를 풀 때 실제 코테에서 시간 안에 푸는 것이 중요하다고 생각해서 노가다를 시도하는데 이렇게..노가다를 하면 현타는.. 풀고 나서 다른 사람 코드를 보고 기절했다. 밑에는 다른 사람 코드.
이거 보세요 남 코드 기절한다 박지우
class Solution {
public int solution(String s) {
String [] words={"zero","one","two","three","four","five","six","seven","eight","nine"};
String [] number={"0","1","2","3","4","5","6","7","8","9"};
for(int i=0;i<10;i++){
if(s.contains(words[i])){
s=s.replace(words[i],number[i]);
}
}
return Integer.parseInt(s);
}
}
풀이: 그냥 문자면 숫자로 바꿔줌..
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Java]프로그래머스- 순위(DFS, 깊이 우선 탐색) (0) | 2023.03.22 |
---|---|
[java, 프로그래머스] 게임 맵 최단거리(Lv.2), BFS 너비 우선 탐색 알고리즘 (0) | 2022.10.26 |
[java]프로그래머스 - 로또의 최고 순위와 최저 순위(Lv.1), int 배열에서 특정요소 찾기!!! Set으로 변환해 set.contains() (0) | 2022.10.10 |
[java]2022 KAKAO BLIND RECRUITMENT> 신고 결과 받기, 배열에서 특정 요소 값 index 찾기, map.getOrDefault(,) (0) | 2022.10.10 |
[java]프로그래머스 - 성격 유형 검사하기, String에 char 추가하기 String+=char (0) | 2022.10.03 |