Skip to content

Commit 1284517

Browse files
committed
[level 1] Title: 숫자 문자열과 영단어, Time: 13.60 ms, Memory: 72.7 MB -BaekjoonHub
1 parent c4c01c4 commit 1284517

2 files changed

Lines changed: 222 additions & 0 deletions

File tree

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# [level 1] 숫자 문자열과 영단어 - 81301
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/81301)
4+
5+
### 성능 요약
6+
7+
메모리: 72.7 MB, 시간: 13.60 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 2021 카카오 채용연계형 인턴십
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 06월 28일 18:46:10
20+
21+
### 문제 설명
22+
23+
<p><img src="https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/d31cb063-4025-4412-8cbc-6ac6909cf93e/img1.png" title="" alt="img1.png"></p>
24+
25+
<p>네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.<br><br>
26+
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.</p>
27+
28+
<ul>
29+
<li>1478 → "one4seveneight"</li>
30+
<li>234567 → "23four5six7"</li>
31+
<li>10203 → "1zerotwozero3"</li>
32+
</ul>
33+
34+
<p>이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 <code>s</code>가 매개변수로 주어집니다. <code>s</code>가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.</p>
35+
36+
<p>참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.</p>
37+
<table class="table">
38+
<thead><tr>
39+
<th>숫자</th>
40+
<th>영단어</th>
41+
</tr>
42+
</thead>
43+
<tbody><tr>
44+
<td>0</td>
45+
<td>zero</td>
46+
</tr>
47+
<tr>
48+
<td>1</td>
49+
<td>one</td>
50+
</tr>
51+
<tr>
52+
<td>2</td>
53+
<td>two</td>
54+
</tr>
55+
<tr>
56+
<td>3</td>
57+
<td>three</td>
58+
</tr>
59+
<tr>
60+
<td>4</td>
61+
<td>four</td>
62+
</tr>
63+
<tr>
64+
<td>5</td>
65+
<td>five</td>
66+
</tr>
67+
<tr>
68+
<td>6</td>
69+
<td>six</td>
70+
</tr>
71+
<tr>
72+
<td>7</td>
73+
<td>seven</td>
74+
</tr>
75+
<tr>
76+
<td>8</td>
77+
<td>eight</td>
78+
</tr>
79+
<tr>
80+
<td>9</td>
81+
<td>nine</td>
82+
</tr>
83+
</tbody>
84+
</table>
85+
<hr>
86+
87+
<h5>제한사항</h5>
88+
89+
<ul>
90+
<li>1 ≤ <code>s</code>의 길이 ≤ 50</li>
91+
<li><code>s</code>가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.</li>
92+
<li>return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 <code>s</code>로 주어집니다.</li>
93+
</ul>
94+
95+
<hr>
96+
97+
<h5>입출력 예</h5>
98+
<table class="table">
99+
<thead><tr>
100+
<th>s</th>
101+
<th>result</th>
102+
</tr>
103+
</thead>
104+
<tbody><tr>
105+
<td><code>"one4seveneight"</code></td>
106+
<td>1478</td>
107+
</tr>
108+
<tr>
109+
<td><code>"23four5six7"</code></td>
110+
<td>234567</td>
111+
</tr>
112+
<tr>
113+
<td><code>"2three45sixseven"</code></td>
114+
<td>234567</td>
115+
</tr>
116+
<tr>
117+
<td><code>"123"</code></td>
118+
<td>123</td>
119+
</tr>
120+
</tbody>
121+
</table>
122+
<hr>
123+
124+
<h5>입출력 예 설명</h5>
125+
126+
<p><strong>입출력 예 #1</strong></p>
127+
128+
<ul>
129+
<li>문제 예시와 같습니다.</li>
130+
</ul>
131+
132+
<p><strong>입출력 예 #2</strong></p>
133+
134+
<ul>
135+
<li>문제 예시와 같습니다.</li>
136+
</ul>
137+
138+
<p><strong>입출력 예 #3</strong></p>
139+
140+
<ul>
141+
<li>"three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.</li>
142+
<li>입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.</li>
143+
</ul>
144+
145+
<p><strong>입출력 예 #4</strong></p>
146+
147+
<ul>
148+
<li><code>s</code>에는 영단어로 바뀐 부분이 없습니다.</li>
149+
</ul>
150+
151+
<hr>
152+
153+
<h5>제한시간 안내</h5>
154+
155+
<ul>
156+
<li>정확성 테스트 : 10초</li>
157+
</ul>
158+
159+
160+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
class Solution {
2+
public int solution(String s) {
3+
int answer = 0;
4+
5+
for(int i =0; i<s.length(); i++) {
6+
if(s.charAt(i) >=48 && s.charAt(i) <=57) {
7+
answer *= 10;
8+
answer += Integer.parseInt(s.charAt(i) +"");
9+
}
10+
else {
11+
String currentNumString = "";
12+
while(true) {
13+
currentNumString += (s.charAt(i) +"");
14+
i+=1;
15+
if(checkNum(currentNumString) != -1) {
16+
int cur = checkNum(currentNumString);
17+
answer *=10;
18+
answer += cur;
19+
break;
20+
}
21+
}
22+
i--;
23+
}
24+
}
25+
return answer;
26+
}
27+
28+
static int checkNum(String cur) {
29+
if(cur.equals("zero")) {
30+
return 0;
31+
}
32+
else if(cur.equals("one")) {
33+
return 1;
34+
}
35+
else if(cur.equals("two")) {
36+
return 2;
37+
}
38+
else if(cur.equals("three")) {
39+
return 3;
40+
}
41+
else if(cur.equals("four")) {
42+
return 4;
43+
}
44+
else if(cur.equals("five")) {
45+
return 5;
46+
}
47+
else if(cur.equals("six")) {
48+
return 6;
49+
}
50+
else if(cur.equals("seven")) {
51+
return 7;
52+
}
53+
else if(cur.equals("eight")) {
54+
return 8;
55+
}
56+
else if(cur.equals("nine")) {
57+
return 9;
58+
}
59+
return -1;
60+
}
61+
62+
}

0 commit comments

Comments
 (0)