https://programmers.co.kr/learn/courses/30/lessons/81301
ํ๋ก๊ทธ๋๋จธ์ค 2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ "์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด" ๋ฌธ์ ํ์ด์ด๋ค.
์๋จ์ด๋ก ๋ ์ซ์๊ฐ ์ด๋์ ์๋์ง ์ฐพ๊ธฐ๋ง ํ๋ฉด ์ฝ๊ฒ ํ ์ ์์๋ค.
import java.util.*;
class Solution {
static final String[] ENG = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
static final String[] NUM = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
public int solution(String s) {
String result = "";
String str = "";
for (int i = 0; i < s.length(); i++) {
// ์ซ์๊ฐ ๋์ค๊ธฐ ์ ๊น์ง ์ด์ ์๋จ์ด๋ค์ str์ ์ ์ฅ
if (!isNumeric(s.charAt(i))) {
str += s.charAt(i);
} else {
// ์ซ์๊ฐ ๋์ค๋ฉด ์ ์ฅ๋ ์๋จ์ด๋ค์ ์ซ์๋ก ๋ณํ
result += getParseNumber(str);
result += s.charAt(i);
str = "";
}
// ์ซ์๊ฐ ๋์ด์ ๋์ค์ง ์์ผ๋ฉด(์๋จ์ด๋ก ๋๋๋ฉด) ๊ทธ ์๋จ์ด๋ค์ ์ซ์๋ก ๋ณํ
if (i == s.length() - 1 && !isNumeric(s.charAt(i))) {
result += getParseNumber(str);
}
}
return Integer.parseInt(result);
}
// ๋ฌธ์๋ฅผ ์
๋ ฅ๋ฐ์ ์ซ์๋ก ๋ณํํ ์ ์๋์ง ํ์ธ
// ex) '0' -> 0
public static boolean isNumeric(char c) {
int num = Character.getNumericValue(c);
if (num >= 0 && num <= 9) { // 0 ~ 9 ์ฌ์ด์ ์์ผ๋ฉด ์ซ์
return true;
}
return false;
}
// ์๋จ์ด๋ก๋ ์ซ์๋ฅผ ์ซ์๋ก ๋ณํ
// ex) sevensix -> 76
public static String getParseNumber(String str) {
if (str.length() == 0) return "";
String result = "";
String temp = "";
int idx = 0;
for (int i = 0; i < str.length(); i++) {
temp += str.charAt(i);
// ์๋จ์ด๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ์๋ ์์ผ๋ ํ ๋จ์ด ๋๋๋ฉด temp๋ฅผ ๋น์์ค
if (Arrays.asList(ENG).contains(temp)) {
idx = Arrays.asList(ENG).indexOf(temp);
result += NUM[idx];
temp = "";
}
}
return result;
}
}
๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋๋ฐ ๋ด๊ฐ ๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐํ๋ค๋ ๊ฒ์ ์๊ณ ๊ฐ์ ํด๋ณด์๋ค.
์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ํ๋์ฉ ๋ฐ๋ณตํ๋ฉฐ ํ์ํ๋ ๊ฒ๋ง ์๊ฐํ๋๋ฐ replace ํ ๊ฐ์ ๋ฐ ์์ด ์ ํด์ ธ์์ผ๋๊น ๋์ฒดํ ๋ฌธ์๋ค์ ์ฃผ์ด์ง ๋ฌธ์์ด์์ ์ฐพ์๋ด๊ณ , ๋ณํํ๋ ๋ฐฉ์์ผ๋ก ์์ฃผ ๊ฐ๋จํ๊ฒ ํ ์ ์์๋ค.
๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ํ๋ํ๋ ํ์ํ์ง ์๊ณ ์๋จ์ด๋ฅผ ์ฐพ์์ ๋ฐ๋ก ์ซ์๋ก ๋ณํํ๋ ์ฝ๋์ด๋ค.
import java.util.*;
class Solution {
static final String[] ENG = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
static final String[] NUM = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
public int solution(String s) {
for(int i = 0; i < 10; i++) {
s = s.replaceAll(ENG[i], NUM[i]);
}
return Integer.parseInt(s);
}
}
'๊ฐ๋ฐ > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (Java) (0) | 2021.10.29 |
---|---|
ํคํจ๋ ๋๋ฅด๊ธฐ (Java) (0) | 2021.10.26 |
๋ฌธ์์ด ์์ถ (Java) (0) | 2021.10.25 |
์คํ์ฑํ ๋ฐฉ (Java) (0) | 2021.10.24 |
๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (Java) (0) | 2021.10.24 |
๋๊ธ