
Problem ๐ป
https://school.programmers.co.kr/learn/courses/30/lessons/120849
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์ค๋ช
์์ด์์ a, e, i, o, u ๋ค์ฏ ๊ฐ์ง ์ํ๋ฒณ์ ๋ชจ์์ผ๋ก ๋ถ๋ฅํฉ๋๋ค. ๋ฌธ์์ด my_string์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ๋ชจ์์ ์ ๊ฑฐํ ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- my_string์ ์๋ฌธ์์ ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- 1 ≤ my_string์ ๊ธธ์ด ≤ 1,000
์ ์ถ๋ ฅ ์my_stringresult
| "bus" | "bs" |
| "nice to meet you" | "nc t mt y" |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- "bus"์์ ๋ชจ์ u๋ฅผ ์ ๊ฑฐํ "bs"๋ฅผ returnํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #1
- "nice to meet you"์์ ๋ชจ์ i, o, e, u๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ "nc t mt y"๋ฅผ returnํฉ๋๋ค.
Approach 1 โ - ๋์ ์๋ชป๋ ์ฝ๋
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder(my_string);
for (int i = 0; i < sb.length(); i++) {
if (charAt(i) == 'i') {
sb.deleteCharAt(i);
} else if (charAt(i) == 'o' ) {
sb.deleteCharAt(i) ;
} else if (charAt(i) == 'e') {
sb.deleteCharAt(i);
} else (charAt(i) == 'u') {
sb.deleteCharAt(i);
}
}
return sb;
}
}
}
Approach 2 โญ - ๋์ ํ์ด ๊ต์
์ฃผ์ ๋ฌธ์ ์
1. charAt(i) ํธ์ถ ์ค๋ฅ
charAt(i)๋ sb.charAt(i)๋ก ํธ์ถํด์ผ ํ๋ค.
ํ์ฌ charAt(i)๋ฅผ ์ง์ ํธ์ถํ๊ณ ์์ด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
charAt(i)๋ String ํด๋์ค์ StringBuilder ํด๋์ค์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ก,
ํด๋น ๊ฐ์ฒด์ ํน์ ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
๋ฐ๋ผ์ ๋ฌธ์์ด(String)์ด๋ StringBuilder ๊ฐ์ฒด์ ๋ํด์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋ฐฐ์ด์์๋ charAt(i)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋์ , ๋ฐฐ์ด์ ํน์ ์ธ๋ฑ์ค์ ์ ๊ทผํ๋ ค๋ฉด ๋ฐฐ์ด์ ์ด๋ฆ๊ณผ ๋๊ดํธ([])๋ฅผ ์ฌ์ฉํ๋ค.
charAt(i) ์ฌ์ฉ ๊ฐ๋ฅ ๋์
1. String ํด๋์ค
• ์ค๋ช : ๋ฌธ์์ด์์ ํน์ ์ธ๋ฑ์ค์ ๋ฌธ์๋ฅผ ๋ฐํ.
• ์์ :String str = "hello"; char c = str.charAt(1); // 'e' System.out.println(c); // ์ถ๋ ฅ: eโ
2. StringBuilder ํด๋์ค
• ์ค๋ช : StringBuilder ๊ฐ์ฒด์์ ํน์ ์ธ๋ฑ์ค์ ๋ฌธ์๋ฅผ ๋ฐํ.
• ์์ :
StringBuilder sb = new StringBuilder("world"); char c = sb.charAt(2); // 'r' System.out.println(c); // ์ถ๋ ฅ: rโ
-----
๋ฐฐ์ด์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
๋ฐฐ์ด์ charAt(i)๋ฅผ ์ ๊ณตํ์ง ์๋๋ค.
๋ฐฐ์ด์ ํน์ ์์๋ฅผ ์ฝ๊ฑฐ๋ ์์ ํ๋ ค๋ฉด ๋ฐฐ์ด์ ์ด๋ฆ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
1. ๋ฌธ์ ๋ฐฐ์ด (char[])
• ์์ :
char[] charArray = {'h', 'e', 'l', 'l', 'o'}; char c = charArray[1]; // 'e' System.out.println(c); // ์ถ๋ ฅ: eโ
2. ๋ฌธ์์ด ๋ฐฐ์ด (String[])
• ์์ :
String[] stringArray = {"apple", "banana", "cherry"}; String s = stringArray[1]; // "banana" System.out.println(s); // ์ถ๋ ฅ: bananaโ
2. deleteCharAt(i) ์ฌ์ฉ ์ ์ธ๋ฑ์ค ๋ฌธ์
StringBuilder์์ deleteCharAt(i)๋ฅผ ํธ์ถํ๋ฉด ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ค์ด๋ค๋ฉด์ ์ธ๋ฑ์ค๊ฐ ๋ณ๊ฒฝ๋๋ค.
๋ฐ๋ณต๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์กฐ์ ํ์ง ์์ผ๋ฉด ์ผ๋ถ ๋ฌธ์๊ฐ ์คํต๋ ์ ์๋ค.
3. else ๋ฌธ๋ฒ ์ค๋ฅ
else if๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ณณ์ ์๋ชป๋ else ๋ธ๋ก์ด ์๋ค.
4. ์ค๋ณต ์ฝ๋
๊ฐ ๋ชจ์์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค. ์กฐ๊ฑด์ ํ๋๋ก ํฉ์น ์ ์๋ค.
5. ๋ฐํ ํ์ ์ค๋ฅ
return sb๋ StringBuilder ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ง๋ง, ๋ฉ์๋ ๋ฐํ ํ์ ์ String์ด๋ฏ๋ก ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
sb.toString()์ ๋ฐํํด์ผ ํ๋ค.
Solution ๐ก
class Solution {
public String solution(String my_string) {
// ์ ๊ฑฐํ ๋ชจ์์ ๋ฌธ์์ด๋ก ์ ์
String vowels = "aeiou";
StringBuilder sb = new StringBuilder();
//์
๋ ฅ ๋ฌธ์์ด์ ํ ๊ธ์์ฉ ํ์ธ
for (char c : my_string.toCharArray()) {
// ๋ชจ์์ด ์๋ ๊ฒฝ์ฐ StringBuilder์ ์ถ๊ฐ
if (!vowels.contains(String.valueOf(c))){
sb.append(c);
}
}
//์ต์ข
๋ฌธ์์ด ๋ฐํ
return sb.toString();
}
}
๊ฐ์ ์ฌํญ
1. ๋ชจ์ ์งํฉ์ผ๋ก ์กฐ๊ฑด ๋จ์ํ
• String vowels = "aeiou";๋ก ๋ชจ์์ ์ ์ํ๊ณ , ๊ฐ ๋ฌธ์๊ฐ ๋ชจ์์ธ์ง contains()๋ก ํ์ธํ๋ค.
• ์กฐ๊ฑด๋ฌธ์ด ๊ฐ๊ฒฐํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
2. deleteCharAt ๋์ StringBuilder.append ์ฌ์ฉ
• ํน์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ ๋์ , ๋ชจ์์ด ์๋ ๋ฌธ์๋ฅผ StringBuilder์ ์ถ๊ฐํฉ๋๋ค.
• ๋ฐ๋ณต๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ด์ง๋๋ค.
3. ํจ์จ์ ์ธ ๋ฌธ์์ด ์์ฑ
• StringBuilder๋ ๋ฌธ์์ด ์ถ๊ฐ๊ฐ ํจ์จ์ ์ด๋ฉฐ, ์ต์ข ๊ฒฐ๊ณผ๋ฅผ toString()์ผ๋ก ๋ฐํํฉ๋๋ค.
Reference ๐
'๐ฐ๐ท ํ๊ตญ์ด (Korean) > Java Algorithm Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ์ท๊ฐ๊ฒ ํ ์ธ ๋ฐ๊ธฐ_์กฐ๊ฑด๋ฌธ ๋ถ๊ธฐ ์ฒ๋ฆฌ (0) | 2025.01.02 |
|---|---|
| [Java] ์ค๋ณต๋ ์ซ์ ๊ฐ์ (1) | 2025.01.02 |
| [Java] ์ผ๊ฐํ์ ์์ฑ์กฐ๊ฑด (0) | 2024.12.29 |
| [Java] ์ ๊ณฑ์ ํ๋ณํ๊ธฐ (2) | 2024.12.29 |
| [Java] ํน์ ๋ฌธ์ ์ ๊ฑฐํ๊ธฐ (0) | 2024.12.29 |